提问者:小点点

无法将非常大的数字转换为十六进制[封闭]


我有以下字符串:std::string data{“

我需要将它提取为它的等效十六进制值

当我执行下面的代码时,它将打印 我知道问题是值太大,无法固定值,但是我如何克服这个问题呢? 有没有一种方法可以使用for循环把它一个一个一个地放到一个向量中?

{
    std::istringstream hex_buffer(data);

    unsigned long long value;

    hex_buffer >> std::hex >> value;

    std::cout << value;
    return 0;
}

共1个答案

匿名用户

C++语言使用固定大小的整型。 基本集包含(大小不断增加):charshortintlongchar至少有8位,shortint至少有16位,long至少有32位。

long long是一个可选类型,当它存在时,它至少有64位。 但是我不知道整数类型超过64位的体系结构,这意味着更大的值可以用unsigned long long表示,它是

当然,您可以定义一个能够处理整数值或任意大小的类,或者使用一个能够处理任意大小值的库,如gmp,但您不能期望在一个64位整数中存储超过64位的数字。