Класс QUuid
Класс QUuid хранит универсальный уникальный идентификатор (UUID). Подробнее...
| Заголовок: | #include <QUuid> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследуется от: |
Примечание: Все функции этого класса являются повторно-входными.
Типы public
| перечисление | StringFormat { С фигурными скобками, Без фигурных скобок, Id128 } |
| перечисление | Variant { Неизвестный, NCS, DCE, Microsoft, Зарезервированный } |
| перечисление | Version { Неизвестная, Время, Встроенный POSIX, Имя, Md5, …, Sha1 } |
Функции public
| QUuid(const GUID &guid) | |
| QUuid(const QByteArray &text) | |
| QUuid(const QString &text) | |
| QUuid(uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8) | |
| QUuid() | |
| QUuid & | operator=(const GUID &guid) |
| bool | isNull() const |
| QByteArray | toByteArray(QUuid::StringFormat mode = WithBraces) const |
| CFUUIDRef | toCFUUID() const |
| NSUUID * | toNSUUID() const |
| QByteArray | toRfc4122() const |
| QString | toString(QUuid::StringFormat mode = WithBraces) 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 |
| 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) |
| QUuid | fromCFUUID(CFUUIDRef uuid) |
| QUuid | fromNSUUID(const NSUUID *uuid) |
| QUuid | fromRfc4122(const QByteArray &bytes) |
| QUuid | fromString(QStringView text) |
| QUuid | fromString(QLatin1String text) |
Связанные нечлены
| 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 — это 16-байтовое (128-битное) число, сгенерированное каким-либо алгоритмом, призванным гарантировать уникальность UUID в распределённой вычислительной среде, где он используется. Иногда используется аббревиатура GUID, Глобально Уникальные Идентификаторы, но она относится к тому же.
На самом деле, GUID — один из вариантов UUID. Используются несколько вариантов. Каждый UUID содержит битовое поле, указывающее тип (вариант) UUID. Используйте variant(), чтобы определить тип UUID в экземпляре QUuid. Он извлекает три старших бита 8-го байта из 16 байтов. В QUuid 8-й байт QUuid::data4[0]. Если вы создаёте экземпляры QUuid, используя конструктор, который принимает все числовые значения в качестве параметров, используйте следующую таблицу, чтобы установить три старших бита параметра b1, который становится QUuid::data4[0] и содержит поле варианта в своих трёх старших битах. В таблице «x» означает «не важно».
| msb0 | msb1 | msb2 | Вариант |
|---|---|---|---|
| 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 | Версия |
|---|---|---|---|---|
| 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(). UUID, сгенерированные с помощью createUuid(), относятся к случайному типу. Их биты QUuid::Version установлены в QUuid::Случайный, а биты QUuid::Variant — в QUuid::DCE. Остальная часть UUID состоит из случайных чисел. Теоретически, это означает, что существует небольшая вероятность того, что UUID, сгенерированный с помощью createUuid(), не будет уникальным. Но это очень малая вероятность.
UUID могут быть созданы из числовых значений или строк, или с помощью статической функции createUuid(). Они могут быть преобразованы в строку с помощью toString(). UUID имеют variant() и version(), а нулевые UUID возвращают true от isNull().
Документация по типам членов
[since 5.11] перечисление 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 не может проанализировать это обратно как вход. |
Это перечисление было введено или изменено в Qt 5.11.
перечисление QUuid::Variant
Это перечисление определяет значения, используемые в поле variant field UUID. Значение в поле variant определяет структуру 128-битного значения.
| Константа | Значение | Описание |
|---|---|---|
QUuid::VarUnknown |
-1 |
Неизвестный вариант |
QUuid::NCS |
0 |
Зарезервировано для обратной совместимости NCS (Network Computing System) |
QUuid::DCE |
2 |
Среда распределённых вычислений, схема, используемая QUuid |
QUuid::Microsoft |
6 |
Зарезервировано для обратной совместимости Microsoft (GUID) |
QUuid::Reserved |
7 |
Зарезервировано для будущих определений |
перечисление QUuid::Version
Это перечисление определяет значения, используемые в поле version field UUID. Поле версии имеет смысл только если значение в поле variant field равно QUuid::DCE.
| Константа | Значение | Описание |
|---|---|---|
QUuid::VerUnknown |
-1 |
Неизвестная версия |
QUuid::Time |
1 |
Основанная на времени, с использованием отметки времени, последовательности часов и адреса сетевой карты MAC (если доступен) для разделов узла |
QUuid::EmbeddedPOSIX |
2 |
Версия безопасности DCE, с встроенными UUID POSIX |
QUuid::Name |
Md5 |
Основанная на имени, используя значения из имени для всех разделов |
QUuid::Md5 |
3 |
Псевдоним для Имени |
QUuid::Random |
4 |
Основанная на случайных числах, используя случайные числа для всех разделов |
QUuid::Sha1 |
5 |
Документация по членам-функциям
QUuid::QUuid(const GUID &guid)
Преобразует Windows guid в Qt QUuid.
Предупреждение: Эта функция предназначена только для платформ Windows.
QUuid::QUuid(const QByteArray &text)
Создаёт объект QUuid из QByteArray text, который должен быть отформатирован как пять шестнадцатеричных полей, разделённых '-', например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждая 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но обычно их включают. Если преобразование завершается неудачно, создаётся нулевой UUID. См. toByteArray() для объяснения, как пять шестнадцатеричных полей сопоставляются с открытыми членами данных в QUuid.
См. также toByteArray() и QUuid().
QUuid::QUuid(const QString &text)
Создаёт объект QUuid из строки text, которая должна быть отформатирована как пять шестнадцатеричных полей, разделенных дефисами, например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждая 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но обычно их включают. Если преобразование завершается неудачно, создаётся нулевой UUID. См. toString() для объяснения, как пять шестнадцатеричных полей сопоставляются с открытыми членами данных в QUuid.
См. также toString() и QUuid().
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); QUuid::QUuid()
Создаёт нулевой UUID. toString() отобразит нулевой UUID как "{00000000-0000-0000-0000-000000000000}".
QUuid &QUuid::operator=(const GUID &guid)
Присваивает Windows guid объекту Qt QUuid.
Предупреждение: Эта функция предназначена только для платформ Windows.
[static] QUuid QUuid::createUuid()
На любой платформе, кроме Windows, эта функция возвращает новый UUID с вариантом QUuid::DCE и версией QUuid::Случайный. На Windows генерируется GUID с помощью API Windows, и он будет того типа, который API решает создать.
См. также variant() и version().
[static, since 5.0] QUuid QUuid::createUuidV3(const QUuid &ns, const QByteArray &baseData)
Эта функция возвращает новый UUID с вариантом QUuid::DCE и версией QUuid::Md5. ns — это пространство имён, а baseData — базовые данные, как описано в RFC 4122.
Эта функция была введена в Qt 5.0.
См. также variant(), version() и createUuidV5().
[static, since 5.0] QUuid QUuid::createUuidV3(const QUuid &ns, const QString &baseData)
Эта функция возвращает новый UUID с вариантом QUuid::DCE и версией QUuid::Md5. ns — это пространство имён, а baseData — базовые данные, как описано в RFC 4122.
Эта функция была добавлена в Qt 5.0.
См. также variant(), version() и createUuidV5().
[static, since 5.0] QUuid QUuid::createUuidV5(const QUuid &ns, const QByteArray &baseData)
Эта функция возвращает новый UUID с вариантом QUuid::DCE и версией QUuid::Sha1. ns — это пространство имён, а baseData — базовые данные, как описано в RFC 4122.
Эта функция была добавлена в Qt 5.0.
См. также variant(), version() и createUuidV3().
[static, since 5.0] QUuid QUuid::createUuidV5(const QUuid &ns, const QString &baseData)
Эта функция возвращает новый UUID с вариантом QUuid::DCE и версией QUuid::Sha1. ns — это пространство имён, а baseData — базовые данные, как описано в RFC 4122.
Эта функция была добавлена в Qt 5.0.
См. также variant(), version() и createUuidV3().
[static, since 5.7] QUuid QUuid::fromCFUUID(CFUUIDRef uuid)
Создаёт новый QUuid, содержащий копию CFUUID uuid.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
[static, since 5.7] QUuid QUuid::fromNSUUID(const NSUUID *uuid)
Создаёт новый QUuid, содержащий копию NSUUID uuid.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
[static] QUuid QUuid::fromRfc4122(const QByteArray &bytes)
Создаёт объект QUuid из двоичного представления UUID, как указано в разделе 4.1.2 RFC 4122. См. toRfc4122() для получения дополнительной информации о порядке байтов bytes.
Принимаемый массив байтов НЕ является удобочитаемым форматом.
Если преобразование не удалось, создаётся пустой UUID.
См. также toRfc4122() и QUuid().
[static, since 5.10] QUuid QUuid::fromString(QStringView text)
Создаёт объект QUuid из строки text, которая должна быть отформатирована как пять шестнадцатеричных полей, разделённых дефисами, например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждая 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но их обычно включают. Если преобразование не удалось, возвращается пустой UUID. См. toString() для объяснения того, как пять шестнадцатеричных полей отображаются на открытые члены QUuid.
Эта функция была добавлена в Qt 5.10.
См. также toString() и QUuid().
[static, since 5.10] QUuid QUuid::fromString(QLatin1String text)
Это перегруженная функция.
Создаёт объект QUuid из строки text, которая должна быть отформатирована как пять шестнадцатеричных полей, разделённых дефисами, например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждая 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но их обычно включают. Если преобразование не удалось, возвращается пустой UUID. См. toString() для объяснения того, как пять шестнадцатеричных полей отображаются на открытые члены QUuid.
Эта функция была добавлена в Qt 5.10.
См. также toString() и QUuid().
bool QUuid::isNull() const
Возвращает true , если это пустой UUID {00000000-0000-0000-0000-000000000000}; в противном случае возвращает false.
[since 5.11] 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] |
Эта функция была добавлена в Qt 5.11.
[since 5.7] CFUUIDRef QUuid::toCFUUID() const
Создаёт CFUUID из QUuid.
Вызывающий владелец CFUUID и отвечает за его освобождение.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
[since 5.7] NSUUID *QUuid::toNSUUID() const
Создаёт NSUUID из QUuid.
NSUUID автоматически освобождается.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
QByteArray QUuid::toRfc4122() const
Возвращает двоичное представление этого QUuid. Массив байтов в формате big endian и отформатирован в соответствии с разделом 4.1.2 RFC 4122 — «Расположение и порядок байтов».
Порядок следующий:
| Номер поля | Источник |
|---|---|
| 1 | data1 |
| 2 | data2 |
| 3 | data3 |
| 4 | data4[0] .. data4[7] |
[since 5.11] 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] |
Эта функция была добавлена в Qt 5.11.
QUuid::Variant QUuid::variant() const
Возвращает значение в поле варианта UUID. Если возвращаемое значение QUuid::DCE, вызовите version(), чтобы увидеть используемую структуру. Для пустого UUID вариант неизвестен.
См. также version().
QUuid::Version QUuid::version() const
Возвращает поле версии UUID, если поле варианта UUID равно QUuid::DCE. В противном случае возвращает QUuid::VerUnknown.
См. также variant().
GUID QUuid::operator GUID() const
Возвращает GUID Windows из QUuid.
Предупреждение: Эта функция доступна только для платформ Windows.
bool QUuid::operator!=(const QUuid &other) const
Возвращает true , если этот QUuid и other QUuid различны; в противном случае возвращает false.
bool QUuid::operator!=(const GUID &guid) const
Возвращает true , если этот UUID не равен Windows GUID guid; в противном случае возвращает false.
bool QUuid::operator<(const QUuid &other) const
Возвращает true , если у этого QUuid и other QUuid одинаковое поле варианта и он лексикографически предоставляет other QUuid. Если у other QUuid другое поле варианта, возвращаемое значение определяется путём сравнения двух вариантов.
См. также variant().
bool QUuid::operator==(const QUuid &other) const
Возвращает true если этот QUuid и другой QUuid идентичны; в противном случае возвращает false.
bool QUuid::operator==(const GUID &guid) const
Возвращает true если этот UUID равен Windows GUID guid; в противном случае возвращает false.
bool QUuid::operator>(const QUuid &other) const
Возвращает true если у этого QUuid такой же поле варианта, как у другого QUuid, и он идёт после другого QUuid в лексикографическом порядке. Если у другого QUuid другое поле варианта, возвращаемое значение определяется путём сравнения двух вариантов.
См. также variant().
Связанные нечленные функции
[since 5.0] size_t qHash(const QUuid &uuid, size_t seed = 0)
Возвращает хэш UUID uuid, используя seed для инициализации вычисления.
Эта функция была добавлена в Qt 5.0.
QDataStream &operator<<(QDataStream &s, const QUuid &id)
Записывает UUID id в поток данных s.
QDebug operator<<(QDebug dbg, const QUuid &id)
Записывает UUID id в поток вывода для отладки dbg.
[since 5.5] bool operator<=(const QUuid &lhs, const QUuid &rhs)
Возвращает true если у lhs такое же поле варианта, как у rhs, и оно не идёт после rhs в лексикографическом порядке. Если у rhs другое поле варианта, возвращаемое значение определяется сравнением двух вариантов.
Эта функция была добавлена в Qt 5.5.
См. также variant().
[since 5.5] bool operator>=(const QUuid &lhs, const QUuid &rhs)
Возвращает true если у lhs такое же поле варианта, как у rhs, и оно не идёт перед rhs в лексикографическом порядке. Если у rhs другое поле варианта, возвращаемое значение определяется сравнением двух вариантов.
Эта функция была добавлена в Qt 5.5.
См. также variant().
QDataStream &operator>>(QDataStream &s, QUuid &id)
Читает UUID из потока s в id.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/quuid.html