2

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

_int64 lKey = _atoi64("a1234");

lKey 值始终为零并且不起作用,除非字符串只是像“1234”这样的数字

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

4

2 回答 2

3

该功能确实有效。正如文档所述

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

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

于 2011-10-31T14:26:51.110 回答
2

如果您认为您的数字是十六进制的,并且 C99 没问题,您可能想尝试一下strtoull()

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

或使用自动检测:

const unsigned long long value = strtoull(string, NULL, 0);
于 2011-10-31T14:44:58.917 回答