我有以下字符串:std::string data{“
我需要将它提取为它的等效十六进制值
当我执行下面的代码时,它将打印 我知道问题是值太大,无法固定值,但是我如何克服这个问题呢? 有没有一种方法可以使用for循环把它一个一个一个地放到一个向量中?
{
std::istringstream hex_buffer(data);
unsigned long long value;
hex_buffer >> std::hex >> value;
std::cout << value;
return 0;
}
C++语言使用固定大小的整型。 基本集包含(大小不断增加):char
,short
,int
,long
。 char
至少有8位,short
和int
至少有16位,long
至少有32位。
long long
是一个可选类型,当它存在时,它至少有64位。 但是我不知道整数类型超过64位的体系结构,这意味着更大的值可以用unsigned long long
表示,它是
当然,您可以定义一个能够处理整数值或任意大小的类,或者使用一个能够处理任意大小值的库,如gmp
,但您不能期望在一个64位整数中存储超过64位的数字。