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_t
和uintmax_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,所以你不需要任何花哨的东西。