如何转换和输出超大整数(64位)
开发环境:WIN7(32位)、VC6
数值转字符串
-----------------------
printf("%I64u", (__int64)(1<<64)-1);
输出
18446744073709551615
如果不加类型限定(__int64)
printf("%I64u", (1<<64)-1);
则默认按操作系统位数计算即时值,输出:
4294967295
可以使用__atoi64(),该函数定义在 stdlib.h 头文件中。
unsigned __int64 nU64 = _atoi64("18446744073709551615");
如果给定"18446744073709551616"就输出 0 啦,哈哈!
数值转字符串
-----------------------
printf("%I64u", (__int64)(1<<64)-1);
输出
18446744073709551615
如果不加类型限定(__int64)
printf("%I64u", (1<<64)-1);
则默认按操作系统位数计算即时值,输出:
4294967295
字符串转数值
------------------------可以使用__atoi64(),该函数定义在 stdlib.h 头文件中。
unsigned __int64 nU64 = _atoi64("18446744073709551615");
如果给定"18446744073709551616"就输出 0 啦,哈哈!