c - 带十六进制负值的 sscanf

标签 c hex scanf negative-number

我需要将十六进制的 4 位数字值转换为十进制,所以我使用了 ssscanf 但它不适用于负数... 例如, 内部测试; sscanf("0xfff6","%x",&test); 返回 65526 而不是 -10。 我该如何解决?

最佳答案

您必须手动完成。 x 转换说明符执行从 unsigned int 的转换,它需要一个指向 unsigned int 的指针类型的参数。例如类型转换:

unsigned int test;
int result;

sscanf("0xfff6","%x", &test);
result = (int16_t) test;

关于c - 带十六进制负值的 sscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802970/

相关文章:

python - 使用python将十六进制写入文件

c++ - strtol 对两个不同的十六进制字符串给出相同的答案

c++ - 以十六进制表示位串的最佳实践(Arduino)

c - 数组和 scanf 函数一起工作的问题

c - 如何根据条件语句和 C 输出来修复程序的运行?

c - __TIME__ 预处理器宏是否保证在文件中保持不变?

c - 为什么结果是0x18而不是0x12?

c - %64[^ C 中的说明符

c - C中两个字符串的字母顺序比较

c - fscanf() 函数中的段错误