QUuid类

QUuid类用于存储通用唯一标识符(UUID)。 更多...

头文件 #include <QUuid>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承自

QBluetoothUuid

注意: 此类中所有函数都是可重入的

公共类型

(自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)
boolisNull() const
QByteArraytoByteArray(QUuid::StringFormat mode = WithBraces) const
(自6.6起) QUuid::Id128BytestoBytes(QSysInfo::Endian order = QSysInfo::BigEndian) const
CFUUIDReftoCFUUID() const
NSUUID *toNSUUID() const
QByteArraytoRfc4122() const
QStringtoString(QUuid::StringFormat mode = WithBraces) const
(自6.6起) quint128toUInt128(QSysInfo::Endian order = QSysInfo::BigEndian) const
QUuid::Variantvariant() const
QUuid::Versionversion() const
GUIDoperator GUID() const
booloperator!=(const QUuid &other) const
booloperator!=(const GUID &guid) const
booloperator<(const QUuid &other) const
QUuid &operator=(const GUID &guid)
booloperator==(const QUuid &other) const
booloperator==(const GUID &guid) const
booloperator>(const QUuid &other) const

静态公共成员

QUuidcreateUuid()
QUuidcreateUuidV3(const QUuid &ns, const QByteArray &baseData)
QUuidcreateUuidV3(const QUuid &ns, const QString &baseData)
QUuidcreateUuidV5(const QUuid &ns, const QByteArray &baseData)
QUuidcreateUuidV5(const QUuid &ns, const QString &baseData)
(since 6.6) QUuidfromBytes(const void *bytes, QSysInfo::Endian order = QSysInfo::BigEndian)
QUuidfromCFUUID(CFUUIDRef uuid)
QUuidfromNSUUID(const NSUUID *uuid)
QUuidfromRfc4122(QByteArrayView bytes)
QUuidfromString(QAnyStringView string)
(since 6.6) QUuidfromUInt128(quint128 uuid, QSysInfo::Endian order = QSysInfo::BigEndian)
size_tqHash(const QUuid &uuid, size_t seed = 0)
QDataStream &operator<<(QDataStream &s, const QUuid &id)
QDebugoperator<<(QDebug dbg, const QUuid &id)
booloperator<=(const QUuid &lhs, const QUuid &rhs)
booloperator>=(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”表示不重要

msb0msb1msb2Variant
0xxNCS (网络计算系统)
10xDCE (分布式计算环境)
110Microsoft (GUID)
111为未来扩展预留

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

msb0msb1msb2msb3Version
0001时间
0010嵌入POSIX
0011Md5(名称)
0100随机
0101Sha1

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

大多数平台都提供了生成新UUID的工具,例如 uuidgenguidgen。您还可以使用 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::WithBraces0默认值,toString() 将返回五个十六进制字段,由破折号分隔,并被大括号包围。例如:{00000000-0000-0000-0000-000000000000}。
QUuid::WithoutBraces1只有五个由破折号分隔的字段,没有大括号。例如:00000000-0000-0000-0000-000000000000。
QUuid::Id1283只显示十六进制数字,没有大括号或破折号。注意,QUuid 无法将此类输入还原为输入。

enum QUuid::Variant

此枚举定义了用于UUID的 variant字段 的值。variant字段中的值确定128位值的布局。

常数描述
QUuid::VarUnknown-1variant是未知的
QUuid::NCS0为NCS(网络计算系统)复合性保留
QUuid::DCE2分布式计算环境,QUuid使用的方案
QUuid::Microsoft6为微软复合性保留(GUID)
QUuid::Reserved7为未来定义保留

enum QUuid::Version

此枚举定义了用于UUID的 version字段 的值。version字段只在variant字段的值为 QUuid::DCE 时才有意义。

常数描述
QUuid::VerUnknown-1version是未知的
QUuid::Time1基于时间,通过使用时间戳、时钟序列和MAC网络卡地址(如果可用)作为节点部分
QUuid::EmbeddedPOSIX2DCE安全版本,带嵌入式POSIX UUID
QUuid::NameMd5基于名称,通过使用名称的所有部分
QUuid::Md53名称的别名
QUuid::Random4基于随机数,通过使用所有部分的随机数
QUuid::Sha15 

成员函数文档

[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,参数包括lw1w2b1b2b3b4b5b6b7b8

示例

// {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之前的版本中,此构造函数由一个由QStringQByteArrayconst char*组成的重载集合构成,而不是一个接受QAnyStringView的构造函数。

另请参阅 toString()和QUuid

[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决定创建。

另请参阅 variant()和version

[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)

使用字节顺序 orderbytes 中读取128位(16字节)并返回对应这些字节的 QUuid。如果字节顺序 orderQSysInfo::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

另请参阅toRfc4122QUuid,以及 fromBytes

[static noexcept] QUuid QUuid::fromString(QAnyStringView string)

从字符串 string 创建一个 QUuid 对象,该字符串必须格式化为由 '-' 分隔的五个十六进制字段,例如:"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" 其中每个 'x' 都是一个十六进制数字。这里显示的花括号是可选的,但通常包含它们。如果转换失败,则返回空 UUID。请参阅 toString() 了解五个十六进制字段如何映射到 QUuid 中的公共数据成员。

注意:在 Qt 6.3 之前的版本中,此函数由一个包含 QStringViewQLatin1StringView 的重载集组成,而不是一个接收 QAnyStringView 的函数。

另请参阅 toString()和QUuid

[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 的四个公共数据成员中获取

字段编号来源
1data1
2data2
3data3
4data4[0] .. data4[1]
5data4[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节“布局和字节顺序”进行格式化。

顺序如下:

字段编号来源
1data1
2data2
3data3
4data4[0] .. data4[7]

此函数返回的字节数组中的字节包含与toBytes()相同的二进制内容。

另请参阅toBytes()。

QString QUuid::toString(QUuid::StringFormat mode = WithBraces) const

返回此 QUuid 的字符串表示形式,格式由 mode 参数控制。从左到右,五个十六进制字段按以下方式从 QUuid 的四个公共数据成员中获取

字段编号来源
1data1
2data2
3data3
4data4[0] .. data4[1]
5data4[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

如果此 QUuidother 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

如果此 QUuidother 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)

如果 lhsrhs 具有相同的 变体字段 且依次序 不早于 rhs,则返回 true。如果 rhs 具有不同的变体字段,则返回值由比较两个 变体 决定。

另请参阅variant

QDataStream &operator>>(QDataStream &s, QUuid &id)

从流 s 读取 UUID 到 id

© 2024 Qt 公司有限。本文件中的文档贡献的版权属于其各自的拥有者。本文件包含的文档按照由自由软件基金会发布的 GNU 自由文档许可版本 1.3 的条款提供许可。Qt 和相关标志是芬兰和/或其他世界各地的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。