原文地址:
http://www.gidforums.com/t-3328.html
#include <stdio.h>
#include <basetsd.h>/* required typedef __int64 for gcc */
typedef char TCHAR;
#define TEXT(x) x
unsigned __int64 atou64(const TCHAR *s) ;
int main()
{
unsigned __int64 value;
TCHAR *test = "1234567890123456789";
printf("in main(): test = <%s>/n", test);
printf("sizeof(__int64) = %d/n", sizeof(__int64));
value = atou64(test);
printf("value using I64d: %I64d/n", value); /* for Borland BCC or Microsoft VC++ */
printf("value using Ld: %Ld/n", value); /* for Borland BCC */
printf("value using lld: %lld/n", value); /* for gcc */
printf("value using I64x: %016I64x(hex)/n", value);/* for Borland BCC or Microsoft VC++ */
printf("value using Lx: %016Lx(hex)/n", value);/* for Borland BCC */
printf("value using llx: %016llx(hex)/n", value); /* for gcc */
return 0;
}
unsigned __int64 atou64(const TCHAR *s)
{
const unsigned __int64 max64 = (unsigned __int64)0-1;
unsigned __int64 v = 0;
int digit;
while (*s>=TEXT('0') && *s<=TEXT('9'))
{
digit = *s++ - TEXT('0');
if (v > (max64-digit)/10)
return 0; /* overflow */
v = 10*v + digit;
}
return v;
}
本文介绍了一个简单的C程序,该程序演示了如何将字符串形式的大整数转换为64位无符号整数,并展示了多种不同的打印方法来显示转换后的数值。
1030

被折叠的 条评论
为什么被折叠?



