【发布时间】:2020-12-01 15:29:30
【问题描述】:
我有一个 C 文本文件,其中包含这种格式的十六进制值:
F4 C3 56 78 A3
我想将这些十六进制数字的十进制等值存储到一个无符号字符*数组中。
我知道如何将十六进制值加载到数组中,但不知道如何将它们转换为十进制。
我该怎么做?
谢谢
【问题讨论】:
-
请显示minimal reproducible example,准确的输入和输出值。
-
" 尝试使用 scanf 几个小时" 和
“%x”--> 使用常规引号:"%x",而不是智能引号。如果这是一个错字,请发布真实代码,minimal reproducible example。 -
scanf从标准输入stdin读取,而不是从我们想要的任何地方读取 -
提示:启用所有警告。使用“(x 是一个 int array[])”和
scanf(&buffer[i], "%x", &x[i]);,一个好的编译器会警告类型不匹配。 -
每个十六进制数在缓冲区中占用 3 个字符,而不是 1 个。对于字符串,您需要
sscanf而不是scanf.并且您可能使数组无符号。首先你可以试试这个:sscanf(&buffer[3*i], "%x", &x[i]);