十六进制格式的无符号长整型打印

时间:2013-10-10 00:19:08

标签: c integer printf

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

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

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

4 个答案:

答案 0 :(得分:65)

您可以为ll使用相同的%x尺寸修饰符,因此:

#include <stdio.h>

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

完整的转换和格式说明符在这里有一个很好的表格:

答案 1 :(得分:4)

尝试%llu - 这将是十进制长的无符号格式

%llx打印长整数的无符号十六进制

答案 2 :(得分:2)

printf("Hex add is: %llu", hexAdd);

答案 3 :(得分:0)

我使用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。

祝你好运。 标记