基本上我正在尝试将十六进制字符串转换为unsigned long long values
using strtoull
. 这是简单的代码
#include <stdio.h>
#include <string.h>
int main ()
{
unsigned long long val =0;
//printf("sizeof(unsigned long long)=%d\n", sizeof(unsigned long long));
val = strtoull("0x8004298c42ULL",NULL,16);
printf("%llx\n", val);
if ( val == 0x8004298c42ULL)
{
printf("Success\n");
}
return 0;
}
我希望val
打印8004298c42
,但它打印4298c42
. 8
正在被砍掉。我试过没有 the0x
和没有 the ULL
too。但还是一样的结果。为了确保我不会错过一些琐碎printf
的格式说明符,我什至检查了val
. 仍然没有用(即未打印成功)
我想我错过了一些微不足道的东西,但不知道是什么!