【发布时间】:2011-02-04 06:55:54
【问题描述】:
这是我将十六进制转换为十进制的代码。十六进制值存储在无符号字符数组中:
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。
问候, 小黑子
【问题讨论】:
-
为什么不简单地做 hexToDec = strtol(content, NULL, 16); ?
-
*content 在代码中存储了一个PNG文件的所有内容。
-
此问题未包含解决问题所需的全部信息。
-
它有助于始终以二进制形式存储您的数据,而不是将十六进制值作为 ascii 代码存储在数组中(也是二进制,但这不是我的意思),只需将实际的二进制存储在数组中即可。即 char c= 0x47;然后您可以使用 printf ("%x", c); 访问十六进制值;而且您不必担心这些事情:将数据保存为二进制,使用返回表示的方法(例如 printf)更改表示。请记住,所有数据都是二进制的。现在对我来说很明显这是家庭作业,但请记住我所说的