我尝试使用此函数将字符串转换为 _int64 但它不起作用:
_int64 lKey = _atoi64("a1234");
lKey 值始终为零并且不起作用,除非字符串只是像“1234”这样的数字
我使用 C++ 字符串流阅读解决方案,但我想用纯 C 编写我的应用程序
该功能确实有效。正如文档所述:
每个函数都返回通过将输入字符解释为数字而产生的 __int64 值。如果输入无法转换为该类型的值,则 _atoi64 的返回值为 0。
因此,您必须确保传递了正确的字符串。否则,返回值将始终为零。"a1234"
就该函数而言,它不是一个正确的字符串,并且几乎每个“转储”解析函数都将无法解析它。
如果您认为您的数字是十六进制的,并且 C99 没问题,您可能想尝试一下strtoull()
:
const unsigned long long value = strtoull(string, NULL, 16);
或使用自动检测:
const unsigned long long value = strtoull(string, NULL, 0);