gpt4 book ai didi

c++ - 如何处理高于 7FF 的十六进制值...64 位和 uint64_t 类型

转载 作者:行者123 更新时间:2023-11-28 05:01:48 29 4
gpt4 key购买 nike

我正在使用 64 位十六进制字符串,当我想要 uint64_t 中的数字时,如果数字高于 7f... 它不会正确转换数字。由于我不是英语,我想我可以用一段代码更好地展示问题:

   void testing()
{
std::string str = "cba321456789654a";
uint64_t res = std::strtol(str.c_str(), NULL, 16);
cout << "RESULT " << std::hex << res << endl;
}

我得到的结果是:

RESULT 7fffffffffffffff

我必须将变量的类型更改为更大的 int 吗?或者有办法使用 uit64_t 解决这个问题吗?

最佳答案

您正在处理无符号,但使用的是字符串到有符号的转换例程。而且它没有转换为正确的类型。 strtol 转换为 32 位长。

 uint64_t res = std::strtol(str.c_str(), NULL, 16);

应该阅读

 uint64_t res = std::strtoull(str.c_str(), NULL, 16);

这是 C++ 字符串到整数转换例程文档的链接:

http://en.cppreference.com/w/cpp/string/byte/strtoul

关于c++ - 如何处理高于 7FF 的十六进制值...64 位和 uint64_t 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751183/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com