C将十六进制值“\ xHH”转换为整数

时间:2013-04-02 13:26:15

标签: c formatting hex format-conversion

我想将十六进制数字从文件转换为int 字符串看起来像这样:
\0\0\x05\xa0
这应该是1440.如果我尝试:
int i = '\x05'
我得到5

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

1 个答案:

答案 0 :(得分:2)

看起来像big-endian号码。

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

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,正如所料。