gpt4 book ai didi

c++ - 如何将 64 位地址的 std::string 表示形式转换为 uint64_t?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:22 24 4
gpt4 key购买 nike

我有一个 std::string 表示一个 64 位内存地址,采用 little-endian,十六进制形式。如何将其转换为 uint64_t 表示形式?

最佳答案

#include <sstream>
#include <string>
#include <iostream>
#include <iomanip>
#include <cstdint>

int main()
{
std::string s("0x12345");
std::stringstream strm(s);
std::uint64_t n;
strm >> std::hex >> n;
std::cout << std::hex << n << std::endl;
return 0;
}

这会按预期打印 12345

编辑:如果你想从小端转换为大端,那也是可能的:

#include <sstream>
#include <string>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cstdint>

int main()
{
std::string s("0x12345");
std::stringstream strm(s);

union {
std::uint64_t n;
std::uint8_t a[8];
} u;

strm >> std::hex >> u.n;
std::reverse(u.a, u.a + 8);

std::cout << std::hex << std::setfill('0') << std::setw(16) << u.n << std::endl;
return 0;
}

关于c++ - 如何将 64 位地址的 std::string 表示形式转换为 uint64_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661888/

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