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

时间:2014-04-03 09:00:32

标签: c++ int byte bytearray cstring

让我们首先说明我有0 xp的C ++。

我有一个填充数据的字节数组。

示例:

byte 0: 1
byte 1: 75
byte 2: 125
byte 3: 66
byte 4: 114
byte 5: 97
byte 6: 109

我在C ++中有一个CString,它应该可以获得所有字节。但是字节0-2应该是int'并且字节3-6应该是ASCII字符。

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

" K}Bram"

只有" Bram"部分是正确的。 输出应为:

"175125Bram"

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

receiveStr += "" + (int)buffer[i]);

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

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;
}

我该怎样转换&#39;第一个字节到int&#39; s?

2 个答案:

答案 0 :(得分:1)

当您致电&#39;转换为int&#39;时,这是什么意思?它应该如何在输出中显示? 您的前3个字节已经存储为int值,但其表示仍为ascii字符。

如果它意味着像&#34; 175125Bram&#34;那么解决方案应该是这样的

#include <sstream>

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

答案 1 :(得分:0)

有许多方法..也许itoa,一个非标准的功能,是最知名的。 snprintf / swprintf也可以解决问题。它们需要固定大小的缓冲区,但在这种情况下你可能知道合适的大小。

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