C ++中有128位整数吗?

我需要在一个variables中存储一个128位长的UUID 。 C ++中有128位数据types吗? 我不需要算术运算,我只是想快速存储和读取值。

C ++ 11的新function也可以。

GCC和Clang支持__int128

检出boost的实现 :

 #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int128_t v = 1; 

这比string和数组要好,特别是如果你需要用它进行算术运算。

虽然GCC确实提供了__int128 ,但仅支持具有足够的128位整数模式的目标(处理器)。 在给定的系统上,sizeof() intmax_tuintmax_t确定编译器和平台支持的最大值。

你的问题有两个部分。

1. 128-bin整数 正如@PatrikBeckbuild议boost::multiprecision是真正的大整数的好方法。

2.可变的存储UUID / GUID / CLSID或任何你所说的。 在这种情况下, boost::multiprecision不是一个好主意。 你需要为此目的而devise的GUID结构 。 随着跨平台标签的添加,您可以简单地将该结构复制到您的代码,并使其如下所示:

 struct GUID { uint32_t Data1; uint16_t Data2; uint16_t Data3; uint8_t Data4[8]; }; 

这种格式是由微软定义的一些内在原因,你甚至可以简化为:

 struct GUID { uint8_t Data[16]; }; 

你会得到更好的performance结构简单,而不是对象,可以处理一堆不同的东西。 无论如何,你不需要和GUIDS做math,所以你不需要任何花哨的东西。