Класс QUuid
Класс QUuid хранит универсальный уникальный идентификатор (UUID). Подробнее...
| Заголовок: | #include <QUuid> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Типы общего доступа
| Перечисление | StringFormat { С фигурными скобками, Без фигурных скобок, Id128 } |
| Перечисление | Variant { Неизвестный тип, NCS, DCE, Microsoft, Зарезервировано } |
| Перечисление | Version { Неизвестная версия, Время, EmbeddedPOSIX, Имя, ..., 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) | |
| 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 |
Открытые переменные
| uint | data1 |
| ushort | data2 |
| ushort | data3 |
| uchar [8] | data4 |
Статические публичные члены
| 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(), чтобы определить, какой тип UUID содержит экземпляр QUuid. Он извлекает три старших бита байта 8 из 16 байтов. В QUuid, байт 8 — QUuid::data4[0]. Если вы создаете экземпляры QUuid с помощью конструктора, принимающего все числовые значения в качестве параметров, используйте следующую таблицу, чтобы установить три старших бита параметра b1, который становится QUuid::data4[0] и содержит поле варианта в своих трех старших битах. В таблице «x» означает «не важно».
| msb0 | msb1 | msb2 | Variant |
|---|---|---|---|
| 0 | x | x | NCS (Network Computing System) |
| 1 | 0 | x | DCE (Distributed Computing Environment) |
| 1 | 1 | 0 | Microsoft (GUID) |
| 1 | 1 | 1 | Зарезервировано для будущего расширения |
Если variant() возвращает QUuid::DCE, UUID также содержит поле version в четырёх самых старших битах 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 рабочей группы Network Working Group.
Большинство платформ предоставляют инструмент для генерации новых UUID, например uuidgen и guidgen. Вы также можете использовать createUuid(). UUID, сгенерированные с помощью createUuid(), имеют случайный тип. Их биты QUuid::Version установлены в QUuid::Random, а их биты QUuid::Variant установлены в QUuid::DCE. Остальная часть UUID состоит из случайных чисел. Теоретически это означает, что существует небольшая вероятность того, что UUID, сгенерированный с помощью createUuid(), не будет уникальным. Но это очень небольшая вероятность.
UUID можно создать из числовых значений или строк, или с помощью статической функции createUuid(). Они могут быть преобразованы в строку с помощью toString(). UUID имеют variant() и version(), и нулевые UUID возвращают true от isNull().
Документация по типу членов
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 не может обработать это обратно как вход. |
Это перечисление было добавлено или изменено в Qt 5.11.
enum 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 |
Зарезервировано для будущих определений |
enum QUuid::Version
Это перечисление определяет значения, используемые в поле version field UUID. Поле версии имеет смысл только если значение в поле variant field равно QUuid::DCE.
| Константа | Значение | Описание |
|---|---|---|
QUuid::VerUnknown |
-1 |
Версия неизвестна |
QUuid::Time |
1 |
Основанная на времени, используя метку времени, последовательность часов и адрес сетевой карты MAC (если доступен) для разделов узла |
QUuid::EmbeddedPOSIX |
2 |
Версия безопасности DCE, с встроенными POSIX UUID |
QUuid::Name |
Md5 |
Основанная на имени, используя значения из имени для всех разделов |
QUuid::Md5 |
3 |
Псевдоним для имени |
QUuid::Random |
4 |
Случайная, используя случайные числа для всех разделов |
QUuid::Sha1 |
5 |
Документация по функциям членов
QUuid::QUuid()
Создаёт нулевой UUID. toString() выведет нулевой UUID как "{00000000-0000-0000-0000-000000000000}".
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(const QString &text)
Создаёт объект QUuid из строки text, которая должна быть отформатирована как пять шестнадцатеричных полей, разделённых '-', например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждый 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но их обычно включают. Если преобразование не удаётся, создаётся нулевой UUID. См. toString() для объяснения того, как пять шестнадцатеричных полей отображаются на открытые данные в QUuid.
См. также toString() и QUuid().
QUuid::QUuid(const QByteArray &text)
Создаёт объект QUuid из QByteArray text, которая должна быть отформатирована как пять шестнадцатеричных полей, разделённых '-', например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждый 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но их обычно включают. Если преобразование не удаётся, создаётся нулевой UUID. См. toByteArray() для объяснения того, как пять шестнадцатеричных полей отображаются на открытые данные в QUuid.
Эта функция была добавлена в Qt 4.8.
См. также toByteArray() и QUuid().
QUuid::QUuid(const GUID &guid)
Преобразует Windows guid в Qt QUuid.
Предупреждение: Эта функция предназначена только для платформ Windows.
[static] QUuid QUuid::createUuid()
На платформах, отличных от Windows, эта функция возвращает новый UUID с вариантом QUuid::DCE и версией QUuid::Random. На Windows генерируется GUID с помощью API Windows и будет иметь тип, который API решит создать.
См. также variant() и version().
END_OF_DOCUMENT_MARKER
[static] 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] 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] 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] 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] QUuid QUuid::fromCFUUID(CFUUIDRef uuid)
Создаёт новый QUuid, содержащий копию CFUUID uuid.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
[static] QUuid QUuid::fromNSUUID(const NSUUID *uuid)
Создаёт новый QUuid, содержащий копию NSUUID uuid.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
[static] QUuid QUuid::fromRfc4122(const QByteArray &bytes)
Создаёт объект QUuid из двоичного представления UUID, как указано в RFC 4122, раздел 4.1.2. См. toRfc4122(), чтобы узнать подробнее об порядке байтов bytes.
Принимаемый массив байтов НЕ является удобочитаемым форматом.
Если преобразование не выполняется, создаётся нулевой UUID.
Эта функция была добавлена в Qt 4.8.
См. также toRfc4122() и QUuid().
[static] QUuid QUuid::fromString(QStringView text)
Создаёт объект QUuid из строки text, которая должна быть отформатирована как пять шестнадцатеричных полей, разделённых дефисами, например, "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где каждый 'x' — шестнадцатеричная цифра. Фигурные скобки здесь необязательны, но обычно их включают. Если преобразование не выполняется, возвращается нулевой UUID. См. toString(), чтобы понять, как пять шестнадцатеричных полей сопоставляются с открытыми членами данных в QUuid.
Эта функция была добавлена в Qt 5.10.
См. также toString() и QUuid().
[static] 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.
QByteArray QUuid::toByteArray() const
Возвращает двоичное представление этого QUuid. Массив байтов отформатирован как пять шестнадцатеричных полей, разделённых дефисами и заключённых в фигурные скобки, т. е. "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где 'x' — шестнадцатеричная цифра. Слева направо пять шестнадцатеричных полей получаются из четырёх открытых членов данных в QUuid следующим образом:
| Поле № | Источник |
|---|---|
| 1 | data1 |
| 2 | data2 |
| 3 | data3 |
| 4 | data4[0] .. data4[1] |
| 5 | data4[2] .. data4[7] |
Эта функция была добавлена в Qt 4.8.
QByteArray QUuid::toByteArray(QUuid::StringFormat mode) const
Возвращает строковое представление этого QUuid, с форматированием, контролируемым параметром mode. Слева направо пять шестнадцатеричных полей получаются из четырёх открытых членов данных в QUuid следующим образом:
| Поле № | Источник |
|---|---|
| 1 | data1 |
| 2 | data2 |
| 3 | data3 |
| 4 | data4[0] .. data4[1] |
| 5 | data4[2] .. data4[7] |
Эта функция была добавлена в Qt 5.11.
CFUUIDRef QUuid::toCFUUID() const
Создаёт CFUUID из QUuid. Вызывающий владелец CFUUID и отвечает за его освобождение.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
NSUUID *QUuid::toNSUUID() const
Создаёт NSUUID из QUuid. NSUUID автоматически освобождается.
Примечание: эта функция доступна только на платформах Apple.
Эта функция была добавлена в Qt 5.7.
QByteArray QUuid::toRfc4122() const
Возвращает двоичное представление этого QUuid. Массив байтов в формате big endian, и отформатирован в соответствии с RFC 4122, раздел 4.1.2 — «Расположение и порядок байтов».
Порядок следующий:
| Поле № | Источник |
|---|---|
| 1 | data1 |
| 2 | data2 |
| 3 | data3 |
| 4 | data4[0] .. data4[7] |
Эта функция была добавлена в Qt 4.8.
QString QUuid::toString() const
Возвращает строковое представление этого QUuid. Строка отформатирована как пять шестнадцатеричных полей, разделённых дефисами и заключённых в фигурные скобки, т. е. "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}", где 'x' — шестнадцатеричная цифра. Слева направо пять шестнадцатеричных полей получаются из четырёх открытых членов данных в QUuid следующим образом:
| Поле № | Источник |
|---|---|
| 1 | data1 |
| 2 | data2 |
| 3 | data3 |
| 4 | data4[0] .. data4[1] |
| 5 | data4[2] .. data4[7] |
QString QUuid::toString(QUuid::StringFormat mode) 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
Возвращает значение в поле variant field UUID. Если возвращаемое значение — QUuid::DCE, вызовите version(), чтобы узнать используемую структуру. Нулевой UUID считается имеющим неизвестный variant.
См. также version().
QUuid::Version QUuid::version() const
Возвращает поле version field UUID, если поле variant field UUID равно QUuid::DCE. В противном случае возвращает QUuid::VerUnknown.
См. также variant().
GUID QUuid::operator GUID() const
Возвращает Windows GUID из 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 то же поле variant field, что и у other QUuid, и он лексикографически предшествует other QUuid. Если у other QUuid другое поле variant, возвращаемое значение определяется сравнением двух variants.
См. также variant().
QUuid &QUuid::operator=(const GUID &guid)
Присваивает Windows guid Qt 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 то же поле variant field, что и у other QUuid, и он лексикографически следует за other QUuid. Если у other QUuid другое поле variant, возвращаемое значение определяется сравнением двух variants.
См. также variant().
Связанные нечлены
uint qHash(const QUuid &uuid, uint 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.
bool operator<=(const QUuid &lhs, const QUuid &rhs)
Возвращает true если у lhs то же поле variant field, что и у rhs, и он лексикографически не следует за rhs. Если у rhs другое поле variant, возвращаемое значение определяется сравнением двух variants.
Данная функция была представлена в Qt 5.5.
См. также variant().
bool operator>=(const QUuid &lhs, const QUuid &rhs)
Возвращает true если у lhs то же поле variant field, что и у rhs, и он лексикографически не предшествует rhs. Если у rhs другое поле variant, возвращаемое значение определяется сравнением двух variants.
Данная функция была представлена в 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-5.12/quuid.html