C++ 将整数转换为字节数组时获取奇数字符
我使用以下代码片段将整数转换为C++ 将整数转换为字节数组时获取奇数字符,c++,c++11,C++,C++11,我使用以下代码片段将整数转换为向量: const vector int_to_bytearray(const size_t value)无例外{ 无符号字符字节[4]; 字节[0]=(值>>24)&0xFF; 字节[1]=(值>>16)&0xFF; 字节[2]=(值>>8)&0xFF; 字节[3]=值&0xFF; 常量向量返回(字节,字节+字节大小); 返回到_返回; } 如果我传递值196608我得到{'\x00','\x03','\x00','\x00'},这就是我所期望的。如果我通过了3
向量
:
const vector int_to_bytearray(const size_t value)无例外{
无符号字符字节[4];
字节[0]=(值>>24)&0xFF;
字节[1]=(值>>16)&0xFF;
字节[2]=(值>>8)&0xFF;
字节[3]=值&0xFF;
常量向量返回(字节,字节+字节大小);
返回到_返回;
}
如果我传递值
196608
我得到{'\x00','\x03','\x00','\x00'}
,这就是我所期望的。如果我通过了37
我会得到{0,0,0,%}
,而这个分数让我很失望。我缺少什么?您得到的是“%”字符,其代码为37。所以一切都按预期进行。您如何检查结果?%是ASCII中37的字符。
const vector<unsigned char> int_to_bytearray(const size_t value) noexcept {
unsigned char bytes[4];
bytes[0] = (value >> 24) & 0xFF;
bytes[1] = (value >> 16) & 0xFF;
bytes[2] = (value >> 8) & 0xFF;
bytes[3] = value & 0xFF;
const vector<unsigned char>to_return(bytes, bytes + sizeof bytes);
return to_return;
}