QUuid

QUuid 

#include <QUuid>

 

 

Public Types

enum StringFormat { WithBraces, WithoutBraces, Id128 }
enum Variant { VarUnknown, NCS, DCE, Microsoft, Reserved }
enum Version { VerUnknown, Time, EmbeddedPOSIX, Name, ..., Sha1 }

Public Functions

  QUuid()
  QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8)
  QUuid(const QString &text)
  QUuid(const QByteArray &text)
  QUuid(const GUID &guid)
bool isNull() const
QByteArray toByteArray() const
QByteArray toByteArray(QUuid::StringFormat mode) const
CFUUIDRef toCFUUID() const
NSUUID * toNSUUID() const
QByteArray toRfc4122() const
QString toString() const
QString toString(QUuid::StringFormat mode) const
QUuid::Variant variant() const
QUuid::Version version() const
GUID operator GUID() const
bool operator!=(const QUuid &other) const
bool operator!=(const GUID &guid) const
bool operator<(const QUuid &other) const
QUuid & operator=(const GUID &guid)
bool operator==(const QUuid &other) const
bool operator==(const GUID &guid) const
bool operator>(const QUuid &other) const

Static Public Members

QUuid createUuid()
QUuid createUuidV3(const QUuid &ns, const QByteArray &baseData)
QUuid createUuidV3(const QUuid &ns, const QString &baseData)
QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData)
QUuid createUuidV5(const QUuid &ns, const QString &baseData)
QUuid fromCFUUID(CFUUIDRef uuid)
QUuid fromNSUUID(const NSUUID *uuid)
QUuid fromRfc4122(const QByteArray &bytes)
QUuid fromString(QStringView text)
QUuid fromString(QLatin1String text)

uint qHash(const QUuid &uuid, uint seed = 0)
QDataStream & operator<<(QDataStream &s, const QUuid &id)
QDebug operator<<(QDebug dbg, const QUuid &id)
bool operator<=(const QUuid &lhs, const QUuid &rhs)
bool operator>=(const QUuid &lhs, const QUuid &rhs)
QDataStream & operator>>(QDataStream &s, QUuid &id)

 

 

详细说明

QUuid类存储一个通用唯一标识符(UUID)。

 

使用通用唯一标识符(UUID)是在分布式计算环境中唯一标识实体的标准方法。UUID是由某种算法生成的16字节(128位)数字,旨在保证UUID在使用它的分布式计算环境中是唯一的。缩写GUID通常被用来代替全局唯一标识符,但它指的是同一件事。

 

实际上,GUID是UUID的一种变体。多种变体正在使用中。每个UUID都包含一个位字段,该字段指定它是哪种类型的UUID(变体)。调用variant()可以发现QUuid实例包含哪种UUID类型。它提取16个字节中字节8的三个最高有效位。在QUuid中,字节8是QUuid::data4[0]。如果使用接受所有数值作为参数的构造函数创建QUuid的实例,请使用下表设置参数b1的三个最高有效位,该参数变为QUuid::data4[0],并在其三个最有效位中包含变量字段。在表中,“x”表示不在乎。

 

 

msb0msb1msb2Variant
0 x x NCS (Network Computing System)
1 0 x DCE (Distributed Computing Environment)
1 1 0 Microsoft (GUID)
1 1 1 Reserved for future expansion

 

 

 

如果variant()返回QUuid::DCE,则UUID在QUuid::data3的四个最高有效位中也包含一个版本字段,您可以调用version()来发现您的QUuid包含哪个版本。如果使用接受所有数值作为参数的构造函数创建QUuid的实例,请使用下表设置参数w2的四个最高有效位,该参数将变为QUuid::data3,并在其四个最有效位中包含版本字段。

 

 

msb0msb1msb2msb3Version
0 0 0 1 Time
0 0 1 0 Embedded POSIX
0 0 1 1 Md5(Name)
0 1 0 0 Random
0 1 0 1 Sha1

 

 

上表中列出的DCE版本的字段布局在网络工作组UUID规范中指定。

 

大多数平台都提供了生成新UUID的工具,例如uuidgen和guidgen。您也可以使用createUuid()。createUuid()生成的UUID属于随机类型。它们的QUuid::Version位设置为QUuid::Random,而它们的QUuid::Variant位设置为Quid::DCE。UUID的其余部分由随机数组成。从理论上讲,这意味着createUuid()生成的UUID不唯一的可能性很小。但这是一个非常小的机会。

 

UUID可以由数值或字符串构造,也可以使用静态createUuid()函数。可以使用toString()将它们转换为字符串。UUID有一个variant()和一个version(),null UUID从isNull()返回true。

 

toString(StringFormat)使用此枚举来控制字符串表示形式的格式。可能的值为:

 

 

ConstantValueDescription
QUuid::WithBraces 0 The default, toString() will return five hex fields, separated by dashes and surrounded by braces. Example: {00000000-0000-0000-0000-000000000000}.
QUuid::WithoutBraces 1 Only the five dash-separated fields, without the braces. Example: 00000000-0000-0000-0000-000000000000.
QUuid::Id128 3 Only the hex digits, without braces or dashes. Note that QUuid cannot parse this back again as input.

 

 

enum QUuid::Variant

This enum defines the values used in the variant field of the UUID. The value in the variant field determines the layout of the 128-bit value.

ConstantValueDescription
QUuid::VarUnknown -1 Variant is unknown
QUuid::NCS 0 Reserved for NCS (Network Computing System) backward compatibility
QUuid::DCE 2 Distributed Computing Environment, the scheme used by QUuid
QUuid::Microsoft 6 Reserved for Microsoft backward compatibility (GUID)
QUuid::Reserved 7 Reserved for future definition

enum QUuid::Version

This enum defines the values used in the version field of the UUID. The version field is meaningful only if the value in the variant field is QUuid::DCE.

ConstantValueDescription
QUuid::VerUnknown -1 Version is unknown
QUuid::Time 1 Time-based, by using timestamp, clock sequence, and MAC network card address (if available) for the node sections
QUuid::EmbeddedPOSIX 2 DCE Security version, with embedded POSIX UUIDs
QUuid::Name Md5 Name-based, by using values from a name for all sections
QUuid::Md5 3 Alias for Name
QUuid::Random 4 Random-based, by using random numbers for all sections
QUuid::Sha1 5  

Member Function Documentation

 

 

 

 

 

################################

posted @ 2023-06-30 21:35  西北逍遥  阅读(197)  评论(0编辑  收藏  举报