我正在尝试打印出这样的unsigned long long
:
printf("Hex add is: 0x%ux ", hexAdd);
但我收到了类型转换错误,因为我有一个unsigned long long
。
答案 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。
祝你好运。 标记