C strtoll hex到unsigned long

时间:2016-05-27 01:24:02

标签: c++ c

我有像这样的六角形字符串769cb353f44f 37679162ec73。

当我使用strtoul(prt, null or ptr, 16)strtoull(prt, null or ptr, 16)strtoumax(prt, null or ptr, 16)时,只有最后8个字节会转换为无符号长整数。

喜欢这个ffffffffb353f44f ffffffff9162ec73

我希望这些字符串存储为它们代表的数字。

有谁知道如何解决这个问题,或者至少为什么会这样?

1 个答案:

答案 0 :(得分:1)

你需要unsigned long long,因为字符串太大而无法放入unsigned long。

然后你还需要检查你是否将结果设置为无符号长long并使用%llX打印它(无符号long long以十六进制格式)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
  const char * ptr = "769cb353f44f";
  unsigned long long num;

  num = strtoull(ptr, NULL, 16);

  printf("%llx\n", num);

  return 0;
}