QUuid类
QUuid类用于存储通用唯一标识符(UUID)。 更多...
| 头文件 | #include <QUuid> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) | 
| qmake | QT += core | 
| 继承自 | 
注意: 此类中所有函数都是可重入的。
公共类型
| (自6.6起)联合 | Id128Bytes | 
| 枚举 | StringFormat { WithBraces, WithoutBraces, Id128 } | 
| 枚举 | Variant { VarUnknown, NCS, DCE, Microsoft,Reserved } | 
| 枚举 | Version { VerUnknown, Time, EmbeddedPOSIX, Name, Md5, …, Sha1 } | 
公共函数
| QUuid() | |
| QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8) | |
| (自6.6起) | QUuid(QUuid::Id128Bytes id128, QSysInfo::Endian order = QSysInfo::BigEndian) | 
| QUuid(QAnyStringView text) | |
| QUuid(const GUID &guid) | |
| bool | isNull() const | 
| QByteArray | toByteArray(QUuid::StringFormat mode = WithBraces) const | 
| (自6.6起)QUuid::Id128Bytes | toBytes(QSysInfo::Endian order = QSysInfo::BigEndian) const | 
| CFUUIDRef | toCFUUID() const | 
| NSUUID * | toNSUUID() const | 
| QByteArray | toRfc4122() const | 
| QString | toString(QUuid::StringFormat mode = WithBraces) const | 
| (自6.6起)quint128 | toUInt128(QSysInfo::Endian order = QSysInfo::BigEndian) 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 | 
静态公共成员
| 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) | 
| (since 6.6)QUuid | fromBytes(const void *bytes, QSysInfo::Endian order = QSysInfo::BigEndian) | 
| QUuid | fromCFUUID(CFUUIDRef uuid) | 
| QUuid | fromNSUUID(const NSUUID *uuid) | 
| QUuid | fromRfc4122(QByteArrayView bytes) | 
| QUuid | fromString(QAnyStringView string) | 
| (since 6.6)QUuid | fromUInt128(quint128 uuid, QSysInfo::Endian order = QSysInfo::BigEndian) | 
相关的非成员函数
| size_t | qHash(const QUuid &uuid, size_t 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) | 
详细描述
使用统一唯一标识符(UUID)是在分布式计算环境中唯一标识实体的标准方式。UUID是一种由某些算法生成,旨在保证在使用的分布式计算环境中UUID唯一的16字节(128位)数字。常缩写为GUID,即全局唯一标识符,但它指的也是同一件事。
实际上,GUID是UUID的一种变体。有多个变体在使用中。每个UUID都包含一个位域,用于指定它所属的UUID类型(变体)。调用variant()来发现QUuid实例中包含的是哪种类型的UUID。它会提取16字节中第8个字节的三个最高有效位。在QUuid中,第8个字节是QUuid::data4[0]。如果你使用接受所有数值参数的构造函数创建QUuid实例,请使用以下表来设置参数b1的最高三个有效位,它将成为QUuid::data4[0]并包含其三个最高有效位的变体系数。在表中,“x”表示不重要。
| msb0 | msb1 | msb2 | Variant | 
|---|---|---|---|
| 0 | x | x | NCS (网络计算系统) | 
| 1 | 0 | x | DCE (分布式计算环境) | 
| 1 | 1 | 0 | Microsoft (GUID) | 
| 1 | 1 | 1 | 为未来扩展预留 | 
如果variant()返回QUuid::DCE,则UUID还包含在QUuid::data3的四个最高有效位中的版本字段,您可以调用version()来发现您的QUuid包含哪个版本。如果您使用接受所有数值参数的构造函数创建QUuid实例,请使用以下表来设置参数w2的最高四个有效位,它将成为QUuid::data3并包含其四个最高有效位的版本字段。
| msb0 | msb1 | msb2 | msb3 | Version | 
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 时间 | 
| 0 | 0 | 1 | 0 | 嵌入POSIX | 
| 0 | 0 | 1 | 1 | Md5(名称) | 
| 0 | 1 | 0 | 0 | 随机 | 
| 0 | 1 | 0 | 1 | Sha1 | 
表中列出的DCE版本的字段布局由网络工作组UUID规范指定。
大多数平台都提供了生成新UUID的工具,例如 uuidgen 和 guidgen。您还可以使用 createUuid()(). 由 createUuid() 生成的UUID为随机类型。它们的 QUuid::Version 位数被设置为 QUuid::Random,并且它们的 QUuid::Variant 位数被设置为 QUuid::DCE。UUID的其余部分由随机数组成。从理论上讲,这意味着由 createUuid() 生成的UUID可能不唯一的概率很小。但是,这是一个非常小的概率。
UUID可以从数值或字符串构建,或使用静态的 createUuid() 函数。它们可以用 toString() 转换为字符串。UUID有一个 variant() 和一个 version(),null UUID从 isNull() 返回 true。
成员类型文档
enum QUuid::StringFormat
此枚举用于 toString(StringFormat) 控制字符串表示格式的格式。可能的值如下
| 常数 | 值 | 描述 | 
|---|---|---|
| QUuid::WithBraces | 0 | 默认值,toString() 将返回五个十六进制字段,由破折号分隔,并被大括号包围。例如:{00000000-0000-0000-0000-000000000000}。 | 
| QUuid::WithoutBraces | 1 | 只有五个由破折号分隔的字段,没有大括号。例如:00000000-0000-0000-0000-000000000000。 | 
| QUuid::Id128 | 3 | 只显示十六进制数字,没有大括号或破折号。注意,QUuid 无法将此类输入还原为输入。 | 
enum QUuid::Variant
此枚举定义了用于UUID的 variant字段 的值。variant字段中的值确定128位值的布局。
| 常数 | 值 | 描述 | 
|---|---|---|
| QUuid::VarUnknown | -1 | variant是未知的 | 
| QUuid::NCS | 0 | 为NCS(网络计算系统)复合性保留 | 
| QUuid::DCE | 2 | 分布式计算环境,QUuid使用的方案 | 
| QUuid::Microsoft | 6 | 为微软复合性保留(GUID) | 
| QUuid::Reserved | 7 | 为未来定义保留 | 
enum QUuid::Version
此枚举定义了用于UUID的 version字段 的值。version字段只在variant字段的值为 QUuid::DCE 时才有意义。
| 常数 | 值 | 描述 | 
|---|---|---|
| QUuid::VerUnknown | -1 | version是未知的 | 
| QUuid::Time | 1 | 基于时间,通过使用时间戳、时钟序列和MAC网络卡地址(如果可用)作为节点部分 | 
| QUuid::EmbeddedPOSIX | 2 | DCE安全版本,带嵌入式POSIX UUID | 
| QUuid::Name | Md5 | 基于名称,通过使用名称的所有部分 | 
| QUuid::Md5 | 3 | 名称的别名 | 
| QUuid::Random | 4 | 基于随机数,通过使用所有部分的随机数 | 
| QUuid::Sha1 | 5 | 
成员函数文档
[constexpr noexcept] QUuid::QUuid()
创建空UUID。 toString() 将输出null UUID为 "{00000000-0000-0000-0000-000000000000}"。
[constexpr noexcept] QUuid::QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8)
使用参数指定的值创建一个UUID,参数包括l、w1、w2、b1、b2、b3、b4、b5、b6、b7、b8。
示例
// {67C8770B-44F1-410A-AB9A-F9B5446F13EE} QUuid IID_MyInterface(0x67c8770b, 0x44f1, 0x410a, 0xab, 0x9a, 0xf9, 0xb5, 0x44, 0x6f, 0x13, 0xee);
[explicit noexcept, since 6.6] QUuid::QUuid(QUuid::Id128Bytes id128, QSysInfo::Endian order = QSysInfo::BigEndian)
根据整数参数id128创建一个QUuid对象。输入参数id128被视为具有order字节序。
此功能从Qt 6.6开始引入。
另请参阅 fromBytes(),toBytes(),toRfc4122()和toUInt128。
[explicit noexcept] QUuid::QUuid(QAnyStringView text)
创建一个由字符串text表示的QUuid对象,此字符串必须格式化为由"-"分隔的五个十六进制字段,例如"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",其中每个'x'是十六进制数字。此处显示的花括号是可选的,但通常需要包含它们。如果转换失败,将创建一个空UUID。有关五个十六进制字段如何映射到QUuid公共数据成员的解释,请参阅toString。
注意: 在Qt 6.3之前的版本中,此构造函数由一个由QString,QByteArray和const char*组成的重载集合构成,而不是一个接受QAnyStringView的构造函数。
[constexpr noexcept] QUuid::QUuid(const GUID &guid)
将Windows guid转换为Qt QUuid。
警告: 此函数仅适用于Windows平台。
[静态] QUuid QUuid::createUuid()
在Windows以外的任何平台上,此函数返回一个新的具有QUuid::DCE变体和QUuid::Random版本的UUID。在Windows上,使用Windows API生成GUID,其类型由API决定创建。
[static] QUuid QUuid::createUuidV3(const QUuid &ns, const QByteArray &baseData)
此函数返回一个新的UUID,其变体为QUuid::DCE,版本为
另请参阅变体(),版本(),以及 createUuidV5。
[静态] QUuid QUuid::createUuidV3(const QUuid &ns, const QString &baseData)
此函数返回一个新的UUID,其变体为QUuid::DCE,版本为
另请参阅变体(),版本(),以及 createUuidV5。
[静态] QUuid QUuid::createUuidV5(const QUuid &ns, const QByteArray &baseData)
此函数返回一个新的UUID,其变体为QUuid::DCE,版本为
另请参阅变体(),版本(),以及 createUuidV3。
[静态] QUuid QUuid::createUuidV5(const QUuid &ns, const QString &baseData)
此函数返回一个新的UUID,其变体为QUuid::DCE,版本为
另请参阅变体(),版本(),以及 createUuidV3。
[静态,自6.6版起] QUuid QUuid::fromBytes(const void *bytes, QSysInfo::Endian order = QSysInfo::BigEndian)
使用字节顺序 order 从 bytes 中读取128位(16字节)并返回对应这些字节的 QUuid。如果字节顺序 order 为 QSysInfo::BigEndian,则此函数与 fromRfc4122() 所做的一样。
此功能从Qt 6.6开始引入。
另请参阅fromRfc4122。
[静态] QUuid QUuid::fromCFUUID(CFUUIDRef uuid)
构建一个新的 QUuid,其中包含 uuid CFUUID 的副本。
注:此函数仅在 Apple 平台上可用。
[静态] QUuid QUuid::fromNSUUID(const NSUUID *uuid)
构建一个新的 QUuid,其中包含 uuid NSUUID 的副本。
注:此函数仅在 Apple 平台上可用。
[静态,noexcept] QUuid QUuid::fromRfc4122(QByteArrayView bytes)
从UUID的二进制表示形式创建 QUuid 对象,该表示形式由RFC 4122第4.1.2节指定。有关 bytes 所需顺序的解释,请参阅 toRfc4122()。
接受的字节数组不是人类可读格式。
如果转换失败,则创建一个空UUID。
注:在Qt 6.3之前的版本中,此函数使用 QByteArray,而不是 QByteArrayView。
另请参阅toRfc4122,QUuid,以及 fromBytes。
[static noexcept] QUuid QUuid::fromString(QAnyStringView string)
从字符串 string 创建一个 QUuid 对象,该字符串必须格式化为由 '-' 分隔的五个十六进制字段,例如:"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" 其中每个 'x' 都是一个十六进制数字。这里显示的花括号是可选的,但通常包含它们。如果转换失败,则返回空 UUID。请参阅 toString() 了解五个十六进制字段如何映射到 QUuid 中的公共数据成员。
注意:在 Qt 6.3 之前的版本中,此函数由一个包含 QStringView 和 QLatin1StringView 的重载集组成,而不是一个接收 QAnyStringView 的函数。
[static constexpr noexcept, since 6.6] QUuid QUuid::fromUInt128(quint128 uuid, QSysInfo::Endian order = QSysInfo::BigEndian)
基于整数 uuid 参数创建一个 QUuid。输入参数 uuid 被认为是具有 order 字节顺序。
注意:此函数仅存在于提供 128 位整数类型的平台上。
此功能从Qt 6.6开始引入。
另请参阅:toUInt128(),fromBytes(),toBytes() 和 toRfc4122()。
[noexcept] bool QUuid::isNull() const
如果这是空 UUID {00000000-0000-0000-0000-000000000000},则返回 true;否则返回 false。
QByteArray QUuid::toByteArray(QUuid::StringFormat mode = WithBraces) const
返回此 QUuid 的字符串表示形式,格式由 mode 参数控制。从左到右,五个十六进制字段按以下方式从 QUuid 的四个公共数据成员中获取
| 字段编号 | 来源 | 
|---|---|
| 1 | data1 | 
| 2 | data2 | 
| 3 | data3 | 
| 4 | data4[0] .. data4[1] | 
| 5 | data4[2] .. data4[7] | 
[noexcept, since 6.6] QUuid::Id128Bytes QUuid::toBytes(QSysInfo::Endian order = QSysInfo::BigEndian) const
返回一个在由 order 指定的字节顺序中从此 QUuid 创建的 128 位 ID。如果顺序是 QSysInfo::BigEndian,则此函数的二进制内容与 toRfc4122() 相同。请参阅该功能以获取更多详细信息。
此功能从Qt 6.6开始引入。
另请参阅:toRfc4122(),fromBytes() 和 QUuid。
CFUUIDRef QUuid::toCFUUID() const
从 QUuid 创建一个 CFUUID。
调用者拥有 CFUUID,并负责释放它。
注:此函数仅在 Apple 平台上可用。
NSUUID *QUuid::toNSUUID() const
从 QUuid 创建一个 NSUUID。
NSUUID 会被自动释放。
注:此函数仅在 Apple 平台上可用。
QByteArray QUuid::toRfc4122() const
返回此 QUuid 的二进制表示形式。字节数组以大端格式存储,并根据RFC 4122第4.1.2节“布局和字节顺序”进行格式化。
顺序如下:
| 字段编号 | 来源 | 
|---|---|
| 1 | data1 | 
| 2 | data2 | 
| 3 | data3 | 
| 4 | data4[0] .. data4[7] | 
此函数返回的字节数组中的字节包含与toBytes()相同的二进制内容。
另请参阅toBytes()。
QString QUuid::toString(QUuid::StringFormat mode = WithBraces) const
返回此 QUuid 的字符串表示形式,格式由 mode 参数控制。从左到右,五个十六进制字段按以下方式从 QUuid 的四个公共数据成员中获取
| 字段编号 | 来源 | 
|---|---|
| 1 | data1 | 
| 2 | data2 | 
| 3 | data3 | 
| 4 | data4[0] .. data4[1] | 
| 5 | data4[2] .. data4[7] | 
[constexpr noexcept, since 6.6] quint128 QUuid::toUInt128(QSysInfo::Endian order = QSysInfo::BigEndian) const
返回从指定的 order 字节序创建的128位整数 QUuid。如果字节序为 QSysInfo::BigEndian,则此函数的二元内容与toRfc4122()相同。有关详细信息,请参阅该函数。
注意:此函数仅存在于提供 128 位整数类型的平台上。
此功能从Qt 6.6开始引入。
另请参阅toRfc4122(),fromUInt128(),toBytes(),fromBytes() 和 QUuid。
[noexcept] QUuid::Variant QUuid::variant() const
返回UUID的variant字段中的值。如果返回值是QUuid::DCE,请调用version()以查看它使用哪种布局。空UUID被视为未知变体。
另请参阅version。
[noexcept] QUuid::Version QUuid::version() const
如果UUID的variant字段是QUuid::DCE,则返回UUID的version字段。否则返回QUuid::VerUnknown。
另请参阅variant。
[constexpr noexcept] GUID QUuid::operator GUID() const
从 QUuid 返回一个Windows GUID。
警告: 此函数仅适用于Windows平台。
[constexpr noexcept] bool QUuid::operator!=(const QUuid &other) const
如果此 QUuid 和 other QUuid 不同,则返回 true;否则返回 false。
[constexpr noexcept] bool QUuid::operator!=(const GUID &guid) const
如果此UUID不等于Windows GUID guid,则返回 true;否则返回 false。
[noexcept] bool QUuid::operator<(const QUuid &other) const
如果此 QUuid 具有与 other QUuid 相同的 变体字段 且字典序上小于 other QUuid,则返回 true。如果 other QUuid 具有不同的变体字段,则返回值由比较两个 变体 决定。
另请参阅variant。
[constexpr noexcept] QUuid &QUuid::operator=(const GUID &guid)
将 Windows guid 分配给 Qt QUuid。
警告: 此函数仅适用于Windows平台。
[constexpr noexcept] bool QUuid::operator==(const QUuid &other) const
如果此 QUuid 和 other QUuid 相同,则返回 true;否则返回 false。
[constexpr noexcept] bool QUuid::operator==(const GUID &guid) const
如果此 UUID 等于 Windows GUID guid,则返回 true;否则返回 false。
[noexcept] bool QUuid::operator>(const QUuid &other) const
如果此 QUuid 具有与 other QUuid 相同的 变体字段 且字典序上大于 other QUuid,则返回 true。如果 other QUuid 具有不同的变体字段,则返回值由比较两个 变体 决定。
另请参阅variant。
相关非成员函数
[noexcept] size_t qHash(const QUuid &uuid, size_t seed = 0)
返回 UUID uuid 的哈希值,使用 seed 作为计算种子。
QDataStream &operator<<(QDataStream &s, const QUuid &id)
将 UUID id 写入数据流 s。
QDebug operator<<(QDebug dbg, const QUuid &id)
将 UUID id 写入调试信息输出流 dbg。
[noexcept] bool operator<=(const QUuid &lhs, const QUuid &rhs)
如果 lhs 具有与 rhs 相同的 变体字段 且在字典序上不大于 rhs,则返回 true。如果 rhs 具有不同的变体字段,则返回值由比较两个 变体 决定。
另请参阅variant。
[noexcept] bool operator>=(const QUuid &lhs, const QUuid &rhs)
如果 lhs 与 rhs 具有相同的 变体字段 且依次序 不早于 rhs,则返回 true。如果 rhs 具有不同的变体字段,则返回值由比较两个 变体 决定。
另请参阅variant。
QDataStream &operator>>(QDataStream &s, QUuid &id)
从流 s 读取 UUID 到 id。
© 2024 Qt 公司有限。本文件中的文档贡献的版权属于其各自的拥有者。本文件包含的文档按照由自由软件基金会发布的 GNU 自由文档许可版本 1.3 的条款提供许可。Qt 和相关标志是芬兰和/或其他世界各地的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。