我有一个char阵列中存储的十六进制C++六角阵列附加字符
char peer0_0[] = {0xc1, 0x02, 0x06, 0x08, 0x00, 0x5e, 0x84};
我尝试和在日志中读取的值
std::stringstream ss2;
ss2 << std::hex;
for (int i(0) ; i<8 ; ++i)
ss2 << (int)peer0_0[i] << ' ';
m_manager->log(ss2.str(),HIGH_IMPORTANCE);
结果是
ffffffc1 2 6 8 0 5e ffffff84 0
我不不明白为什么只在两种价值之前追加'ffffff'而不是其他价值?另外为什么最后会出现零点?这是阅读的问题吗?请帮忙。
''char'在您的平台上签名,您需要在'int'之前将其转换为'unsigned char'。 – user657267 2014-10-30 11:59:11
最后的零(或其他垃圾)是因为你循环'i <8',但只有七个元素。将'8'改为'7'或'sizeof peer0_0'。或者使用基于范围的循环。 – 2014-10-30 12:27:49
我会说,使用printf,std :: stuf很烂。 – 2014-10-30 12:34:56