gpt4 book ai didi

c++ - char * 十六进制地址到 ULONG64

转载 作者:行者123 更新时间:2023-11-27 22:49:01 29 4
gpt4 key购买 nike

我正在尝试将十六进制地址转换为 ulong64,如下所示,但它们都不起作用。有什么正确的转换方法吗?

std::string s = "0x0000029078cc0000";
ULONG64 startAdress = _strtoul_l(s.c_str(), nullptr, 16, 0);
// output is 0x00000000ffffffff
_atoi64(address);
// output is 0x0000000000000000
sscanf(s.c_str(), "%16x", &startAdress);
// output is 0x000000009078cc00

最佳答案

_atoi64 只需要十进制格式,而不是十六进制格式。

strtoll 在某些早期版本的 Visual Studio 中不可用

sscanf 使用"%llx""%I64x" 应该可以正常工作 format specifier

您可能希望将编译器警告级别设置为 4,编译器实际上可能会建议正确的格式说明符。

以下示例适用于 VS2015:

ULONG64 startAdress;
std::string s = "0x0000029078cc0000";
std::cout << s << "\n";

startAdress = strtoll(s.c_str(), 0, 16);
printf("%I64x\n", startAdress);

if (sscanf_s(s.c_str(), "%llx", &startAdress) == 1)
printf("%llx\n", startAdress);

if (sscanf_s(s.c_str(), "%I64x", &startAdress) == 1)
printf("%I64x\n", startAdress);

std::cout << std::hex;
std::cout << startAdress << "\n";

关于c++ - char * 十六进制地址到 ULONG64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39647879/

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