C - 十六进制字符串到文字十六进制值

时间:2015-02-26 19:23:48

标签: c string hex string-literals

将十六进制字符串(长度为16或更小)转换为文字十六进制值的最佳方法(在C中)是什么?例如......

#include <stdio.h>
void main() {
    char hexstring[] = "30f400010000";
    printf("0x%.16x", strtoll(hexstring, NULL, 16));
}

...打印0x0000000000010000。我需要打印出0x000030f400010000

我对C很新,所以我可能会遗漏一些非常明显的东西。谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

您在printf中使用了错误的格式说明符。 类型long long的正确格式是以十六进制格式打印%llx

printf("0x%.16llx", strtoll(hexstring, NULL, 16));

答案 1 :(得分:2)

您的strtoll()没问题。这是你%x的错误:

#include <stdio.h>
void main() {
    char hexstring[] = "30f400010000";
    printf("0x%.16llx", strtoll(hexstring, NULL, 16));
}