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

C — Hex string to literal hex value

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

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

...打印 0x0000000000010000。我需要这个来打印 0x000030f400010000.

我是 C 的新手,所以我可能遗漏了一些非常明显的东西。感谢您的帮助。

你的 strtoll() 没问题。是你的%x错了:

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

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

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