如何向后读取数组中的十六进制字符并转换为int

时间:2015-05-19 03:18:19

标签: c++

说我有一个数组如:

unsigned char data [2] = {0x00,0x20};

我希望获得向后读取的所有十六进制值的整数值,因此0200将是十六进制的十六进制值。你会怎样用c ++做这个?我阅读了关于使用sstream的其他帖子,但我不确定如何让流向后读取值。

1 个答案:

答案 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;
&#13;
&#13;