我尝试使用此函数将字符串转换为_int64,但它不起作用:
_int64 lKey = _atoi64("a1234");
lKey值始终为零,除了字符串只有“1234”之类的数字
之外不起作用我使用C ++字符串流阅读解决方案,但我想在纯C中编写我的应用程序
答案 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);