c中int64的十进制到hex
为什么这段代码不起作用?
#include #include int main() { printf("%X", 1327644190303473294); }
我得到了o / p 5f264e8e
但是预期的o / p是126cbd5b5f264e8e
,由下面的PHP脚本给出
可行的方法是
#include
并做:
#include #include // for PRIX64 macro (and INT64_C macro from stdint.h) int main(void) { printf("The value is %"PRIX64"\n", INT64_C(1327644190303473294)); return 0; }
格式’%X’期望类型’unsigned int’,但参数2的类型为’long int’
#include int main(void) { printf("%lX",1327644190303473294); return 0; }
输出
126CBD5B5F264E8E
%X
用于int
,通常为32位。 64位数字所需的咒语与平台有关。 在Mac上,它是%qX
。
您需要使用不同的格式说明符来指示您的整数是64位宽。 就目前而言,您的代码将输入解释为32位整数。
在MSVC中,这将是%I64x
,在某些平台上它将是%lx
并且确实存在其他说明符。
总之,您需要选择适合您的特定工具集的说明符。
对于uint64_t,您可以尝试如下:
uint64_t val = 1327644190303473294; printf("val: 0x%llx\n", val);