gpt4 book ai didi

c - C中十六进制到十进制的转换

转载 作者:行者123 更新时间:2023-12-01 13:06:41 26 4
gpt4 key购买 nike

这是我的代码,它正在执行从十六进制到十进制的转换。十六进制值存储在无符号字符数组中:

  int liIndex ;
long hexToDec ;
unsigned char length[4];

for (liIndex = 0; liIndex < 4 ; liIndex++)
{
length[liIndex]= (unsigned char) *content;
printf("\n Hex value is %.2x", length[liIndex]);
content++;
}
hexToDec = strtol(length, NULL, 16);

每个数组元素包含 1 个字节的信息,我已经读取了 4 个字节。当我执行它时,这是我得到的输出:

 Hex value is 00
Hex value is 00
Hex value is 00
Hex value is 01
Chunk length is 0

谁能帮我理解这里的错误。十进制值应该是 1 而不是 0。

问候,小黑

最佳答案

根据您对 %x 的使用,我的猜测是 content 将您的十六进制数编码为整数数组,而不是字符数组。也就是说,您是将 content 中的 0 数字表示为 '\0' 还是 '0'

strtol 仅适用于后一种情况。如果 content 确实是一个整数数组,下面的代码应该可以解决问题:

hexToDec = 0;
int place = 1;
for(int i=3; i>=0; --i)
{
hexToDec += place * (unsigned int)*(content+i);
place *= 16;
}
content += 4;

关于c - C中十六进制到十进制的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576107/

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