生成各种版本的Boost UUID(通用唯一ID)

时间:2016-03-07 22:46:43

标签: c++ boost uuid distributed distributed-computing

我正在阅读有关Boost UUID的内容。我知道有多种生成UUID的方法,这由UUID的版本字段决定。 This document显示了5个不同版本的UUID。 Boost UUID API允许您查询UUID的版本。但是如何设置版本? Boost documentation page仅显示创建UUID的一种方法,如下所示 -

The attribute 'classes' is undefined for the annotation type ContextConfiguration

那么,您能否告诉我如何基于其他4个版本生成UUID?特别是版本1,即基于时间的发生器对我来说似乎很有趣。

另外,您能否告诉我UUID版本与其变体有何不同?它们听起来都是一样的。

1 个答案:

答案 0 :(得分:1)

我之前从未使用过Boost的Uuid库,但是我对代码进行了一些考虑,看起来似乎version的{​​{1}}和variant基于您使用uuid

有多种生成器,例如random_generatorname_generator。每个生成器都有自己的generatorversion值,它会注入到variant中。

这直接来自源代码,请注意两个生成器的变体和版本是如何不同的。

random_generator.hpp

uuid

name_generator.hpp

// set variant
// must be 0b10xxxxxx
*(u.begin()+8) &= 0xBF;
*(u.begin()+8) |= 0x80;

// set version
// must be 0b0100xxxx
*(u.begin()+6) &= 0x4F; //0b01001111
*(u.begin()+6) |= 0x40; //0b01000000