在C中将char数组(c字符串)转换为_int64

时间:2011-10-31 14:23:57

标签: c int64

我尝试使用此函数将字符串转换为_int64,但它不起作用:

_int64 lKey = _atoi64("a1234");

lKey值始终为零,除了字符串只有“1234”之类的数字

之外不起作用

我使用C ++字符串流阅读解决方案,但我想在纯C中编写我的应用程序

2 个答案:

答案 0 :(得分:3)

该功能确实有效。正如documentation states

  

每个函数返回通过将输入字符解释为数字而生成的__int64值。如果输入无法转换为该类型的值,则_atoi64的返回值为0。

所以你必须确保传递正确的字符串。否则,返回值将始终为零。就此函数而言,"a1234"不是正确的字符串,并且每个“转储”解析函数都无法解析它。

答案 1 :(得分:2)

如果您认为您的号码是十六进制的,并且C99没问题,您可能需要尝试使用strtoull()

const unsigned long long value = strtoull(string, NULL, 16);

或使用自动检测:

const unsigned long long value = strtoull(string, NULL, 0);