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

发布于 2024-12-13 02:10:05 字数 182 浏览 1 评论 0原文

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

_int64 lKey = _atoi64("a1234");

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

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

I tried this function to convert a string to _int64 but it didn't work :

_int64 lKey = _atoi64("a1234");

lKey value is always zero and doesn't work except the string is only digits like "1234"

I read solutions using C++ string stream but I want to write my application in pure C

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

隔岸观火 2024-12-20 02:10:05

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

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

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

The function does indeed work. As the documentation states:

Each function returns the __int64 value produced by interpreting the input characters as a number. The return value is 0 for _atoi64 if the input cannot be converted to a value of that type.

So you have to make sure that a correct string is passed. Otherwise, the return value will always be zero. "a1234" is not a correct string in terms of this function and pretty every "dump" parsing function will fail to parse it.

拍不死你 2024-12-20 02:10:05

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

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

或者使用自动检测:

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

If you consider your number to be hexadecimal, and C99 is okay, you might want to try strtoull() instead:

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

Or with auto-detect:

const unsigned long long value = strtoull(string, NULL, 0);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文