说我有一个数组如:
unsigned char data [2] = {0x00,0x20};
我希望获得向后读取的所有十六进制值的整数值,因此0200将是十六进制的十六进制值。你会怎样用c ++做这个?我阅读了关于使用sstream的其他帖子,但我不确定如何让流向后读取值。
答案 0 :(得分:1)
首先 - 这些不是十六进制或十进制值。当你打印它们时它们就变成了它们。它们是二进制的。 sstream
处理字符串流。这里没有任何内容涉及文本字符串。
第二件事 - 你不该做什么。不要使用unsigned short []
或reinterpret_cast
创建联合,然后稍微改变一下。它是不洁净的,依赖于endian的,如果你拥有大量数据并且性能至关重要,那么有更好的方法。如果不是:
i = 0;
while(i + 1 < length)
{
uint16_t value;
value = (uint16_t)data[i++];
value |= (uint16_t)data[i++] << 8;
...
}
&#13;