C++ 将字节值作为 int 添加到 CString
C++ Add byte value to CString as int
让我们首先声明我有 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"
只有"布拉姆"部分是正确的。输出应为:
"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;
}
如何将第一个字节"转换"为 int?
当你称之为"转换为int"是什么意思?它在输出中应该是什么样子的?您的前 3 个字节已存储为 int 值,但其表示形式仍然是 ascii 字符。
如果它的意思是像"175125Bram"这样的字符串,那么解决方案应该是这样的
#include <sstream>
stringstream ss;
ss << buffer[0] << buffer[1] << buffer[2];
receiveStr += ss.str();
有很多方法。也许itoa
,一个非标准函数,是最著名的函数。snprintf/swprintf也可以作为解决方案。它们需要固定大小的缓冲区,但在这种情况下,也许您可以知道适当的大小。
在 C++11 中,有 std::to_string/std::to_wstring 函数。 它将数字转换为 std::string
/std::wstring
。
相关文章:
- 将布尔变量添加到 int
- 如果 x < 10,则添加前导 0 并将其存储为 int
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- 赋值和添加运算符重载(2个表和int的串联)
- 向size_t添加 int 的正确方法
- C++在减去 int 时向 int 添加一个额外的数字
- 尝试将 char* 添加到 int 时触发编译器错误
- 当我向 vector<int *> 添加元素时,我遇到了一些问题
- 重载 + 运算符以使用 int 添加对象
- 将 int 添加到长整型
- 如果我将未签名的int添加到负int且算术结果是正面的,会发生什么
- 将字符串和 int 添加到字符串中
- 如何在 C/C++ 中将 int 添加到 char[]
- 在 c# 中将 int 添加到字符以将其 ascii 值向上移动(就像在 c++ 中一样)
- 如何在单击按钮时将字符串和int添加到QTableView
- 在c++中,如何从字符串中删除字母,并从字母中向int添加一个数字
- 将unsigned int添加到int
- 如何将C++ "int"添加到哈希集<Integer>?
- C++ 将字节值作为 int 添加到 CString
- 当我将 int 添加到字符时调用哪个运算符 + 函数('a' + 1)