52

我正在尝试打印出unsigned long long这样的:

  printf("Hex add is: 0x%ux ", hexAdd);

但我收到类型转换错误,因为我有一个unsigned long long.

4

4 回答 4

81

您可以对 使用相同的ll大小修饰符%x,因此:

#include <stdio.h>

int main() {
    unsigned long long x = 123456789012345ULL;
    printf("%llx\n", x);
    return 0;
}

完整范围的转换和格式说明符都在一个很棒的表格中:

于 2013-10-10T00:24:28.047 回答
6

尝试%llu- 这将是 long long unsigned 十进制形式

%llx以十六进制打印 long long unsigned

于 2013-10-10T00:20:10.953 回答
2
printf("Hex add is: %llu", hexAdd);
于 2013-10-10T00:20:27.450 回答
1

我在使用 MinGW 库时遇到了类似的问题。我无法让它识别 %llu 或 %llx 的东西。

这是我的答案...

void PutValue64(uint64_t value) {
char    a_string[25];   // 16 for the hex data, 2 for the 0x, 1 for the term, and some spare
uint32  MSB_part;
uint32  LSB_part;

    MSB_part = value >> 32;
    LSB_part= value & 0x00000000FFFFFFFF;

    printf(a_string, "0x%04x%08x", MSB_part, LSB_part);
}

注意,我认为 %04x 可以简单地是 %x,但 %08x 是必需的。

祝你好运。标记

于 2019-06-11T18:36:50.047 回答