sscanf long hex number into long long int

时间:2015-09-21 14:08:53

标签: c int long-integer scanf

我有很长的十六进制数,例如 a3dafc126e (10个字符长)我想阅读并使用sscanf转换为十进制数字:

long long int timestamp=0;
result = sscanf(msgPtr,"%10x", &timestamp); //msgptr contains the string a3dafc126e
printf("%lld\n",timestamp);

但结果是

  

3673952878

对应 dafc126e

你能告诉我,我做错了什么,scanf只读取8个十六进制字符而不是10个?

1 个答案:

答案 0 :(得分:4)

"%10x"用于读取int值,int大小可能是4个字节。

要阅读long long int值,请使用sscanf(msgPtr,"%10llx", &timestamp);

如果您的编译器抱怨或无效,请尝试sscanf(msgPtr,"%10I64x", &timestamp);