首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++将字节值作为int添加到CString中

C++将字节值作为int添加到CString中
EN

Stack Overflow用户
提问于 2014-04-03 09:00:31
回答 2查看 1.1K关注 0票数 2

让我们首先声明,我在C++中有0 xp。

我有一个字节数组,其中充满了数据。

示例:

代码语言:javascript
运行
复制
byte 0: 1
byte 1: 75
byte 2: 125
byte 3: 66
byte 4: 114
byte 5: 97
byte 6: 109

我在C++中有一个C++,它应该得到所有的字节。但是字节0-2应该是int字符,而字节3-6应该是ASCII字符。

当我读取字节并将它们放在CString中时,将显示以下内容:

" K}Bram"

只有"Bram“部分是正确的。产出应是:

代码语言:javascript
运行
复制
"175125Bram"

我在字节数组的索引上有一个开关,这样我就可以控制字节。对于字节0-2,我使用以下代码:

代码语言:javascript
运行
复制
receiveStr += "" + (int)buffer[i]);

对于字节3-6,我使用以下代码:

代码语言:javascript
运行
复制
if ((buffer[i] >= 0x20 && buffer[i] <= 0x7E) || (buffer[i] == '\r') || (buffer[i] == '\n') || (buffer[i] == '\t'))
{
    receiveStr += buffer[i];
}
else
{
    // Display the invalid character placeholder (square)
    receiveStr += (char)0x7F;
}

我如何将第一个字节“转换”为int's?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 09:23:19

当您调用“转换为int”时,这意味着什么?在输出中应该是什么样子呢?前3个字节已经存储为int值,但其表示形式仍然是ascii字符。

如果它的意思是字符串类似于"175125Bram“,那么解决方案应该是这样的

代码语言:javascript
运行
复制
#include <sstream>

stringstream ss;
ss << buffer[0] << buffer[1] << buffer[2];
receiveStr += ss.str();
票数 1
EN

Stack Overflow用户

发布于 2014-04-03 11:12:46

有很多方法..。也许itoa,一个非标准的函数,是最著名的函数.斯普林特/斯普林特也可以作为解决方案。它们需要一个固定大小的缓冲区,但在这种情况下,您也许可以知道合适的大小。

在C++11中,有字符串/wstring函数。它将数字转换为std::string/std::wstring

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22832642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档