繁体   English   中英

在c中以十六进制打印无符号长整数

[英]Printing an unsigned long in hex in c

我在 c 中打印一个大的 16 位十六进制数时遇到了麻烦

unsigned long long j = 0x89ABCDEF12893456;
printf("0x%lx\n", j); //prints: 0x12893456
printf("%#lx", j); //prints: 0x12893456

有没有办法打印整数?

根据 C 标准, C11 7.21.6 Formatted input/output functions /7讨论了长度修饰符:

ll (ell-ell):指定后面的diouxX转换说明符适用于long long intunsigned long long int参数; 或者后面的n转换说明符适用于指向long long int参数的指针。

单个l指定longunsigned long 因此%llx%#llx是您想要的格式说明符,如果您希望数字"0x%016llx" (例如"0x%016llx" ),可能还带有输出长度和零填充。

那应该这样做。

#include <stdio.h>
int main () {

unsigned long long j = 0x89ABCDEF12893456;    
printf("%#llx", j); 
return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM