我正在尝试打印出unsigned long long
这样的:
printf("Hex add is: 0x%ux ", hexAdd);
但我收到类型转换错误,因为我有一个unsigned long long
.
您可以对 使用相同的ll
大小修饰符%x
,因此:
#include <stdio.h>
int main() {
unsigned long long x = 123456789012345ULL;
printf("%llx\n", x);
return 0;
}
完整范围的转换和格式说明符都在一个很棒的表格中:
尝试%llu
- 这将是 long long unsigned 十进制形式
%llx
以十六进制打印 long long unsigned
printf("Hex add is: %llu", hexAdd);
我在使用 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 是必需的。
祝你好运。标记