gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:55 24 4
gpt4 key购买 nike

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

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

最佳答案

这看起来像一个 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,正如预期的那样。

关于C 将十六进制值 "\xHH"转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15765346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com