2

我想将文件中的十六进制数转换为 int。
字符串如下所示:
\0\0\x05\xa0
这应该是 1440。如果我尝试:
int i = '\x05'
我得到5.

但是,如果我对我做同样的事情,\xa0我会得到-96.
任何想法如何正确转换字符串?

4

1 回答 1

2

这看起来像一个大端数。

假设你有四个(不是 12,好像你显示的字节是一个字符串;我假设它们是二进制字节)的数组中的字节unsigned char data[4],你应该能够像这样转换:

const unsigned int x = (data[0] << 24) | (data[1] << 16) |
                       (data[2] << 8)  | data[3];

如果我们插入您的数据:

const unsigned char data[] = { 0, 0, 0x5, 0xa0 };

以上变为:

const unsigned int x = (0 << 24) | (0 << 16) | (5 << 8) | 160;

正如预期的那样,这只是256 * 5 | 160= 1280 | 160= 。1440

于 2013-04-02T13:29:03.297 回答