繁体   English   中英

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

[英]How to convert std::string representation of 64-bit address to uint64_t?

我有一个std::string表示小端,十六进制形式的64位内存地址。 如何将其转换为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

编辑:如果你想从little-endian转换为big-endian,那也是可能的:

#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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM