Класс QUuid
Класс QUuid хранит универсальный идентификатор (UUID). Подробнее...
| Заголовок: | #include <QUuid> |
| qmake: | QT += core |
| Наследуется от: |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| Перечисление | Вариант { VarUnknown, NCS, DCE, Microsoft, Зарезервировано } |
| Перечисление | Версия { VerUnknown, Time, EmbeddedPOSIX, Name, ..., 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 | toRfc4122() const |
| QString | toString() const |
| QUuid::Вариант | variant() const |
| QUuid::Версия | version() const |
| 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) |
| QUuid | fromRfc4122(const QByteArray &bytes) |
Связанные нечлены
| 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 в распределенной вычислительной среде.
Иногда вместо аббревиатуры 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 | Embedded POSIX |
| 0 | 0 | 1 | 1 | Md5(Имя) |
| 0 | 1 | 0 | 0 | Случайный |
| 0 | 1 | 0 | 1 | Sha1 |
Макет поля для версий DCE, перечисленных в таблице выше, указан в спецификации UUID рабочей группы сети RFC 4122.
Большинство платформ предоставляют инструмент для генерации новых 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::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. Поле version имеет смысл только если значение в поле variant field равно QUuid::DCE.
| Константа | Значение | Описание |
|---|---|---|
QUuid::VerUnknown |
-1 |
Неизвестная версия |
QUuid::Time |
1 |
Основанная на времени, с использованием метки времени, последовательности часов и адреса сетевой карты MAC (если доступен) для разделов узла |
QUuid::EmbeddedPOSIX |
2 |
Версия DCE Security, с встроенными 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. Если существует устройство /dev/urandom, то числа, используемые для построения UUID, будут криптографически безопасными, что сделает UUID уникальным. В противном случае числа UUID будут получены из локального псевдослучайного генератора чисел (qrand(), который инициализируется qsrand()), который обычно не является криптографически безопасным, что означает, что уникальность UUID не гарантируется.
На платформе Windows генерируется GUID, который практически гарантированно будет уникальным на данной или любой другой системе, подключённой к сети или нет.
См. также variant() и version().
[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::fromRfc4122(const QByteArray &bytes)
Создаёт объект QUuid из двоичного представления UUID, как указано в разделе 4.1.2 RFC 4122. Смотрите toRfc4122() для дополнительного объяснения порядка bytes.
Принимаемый массив байтов НЕ является читаемым человеком форматом.
Если преобразование завершается неудачно, создаётся нулевой UUID.
Эта функция была добавлена в Qt 4.8.
См. также toRfc4122() и 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::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] |
QUuid::Variant QUuid::variant() const
Возвращает значение в поле variant UUID. Если возвращаемое значение — QUuid::DCE, вызовите version(), чтобы увидеть используемую структуру. Нулевой UUID считается имеющим неизвестный тип.
См. также version().
QUuid::Version QUuid::version() const
Возвращает поле версии UUID, если поле варианта UUID равно QUuid::DCE. В противном случае возвращает QUuid::VerUnknown.
См. также variant().
QUuid::operator GUID() const
Возвращает Windows GUID из QUuid.
Предупреждение: Эта функция предназначена только для платформ Windows.
bool QUuid::operator!=(const QUuid &other) const
Возвращает true , если этот QUuid и QUuid other различны; в противном случае возвращает false.
bool QUuid::operator!=(const GUID &guid) const
Возвращает true , если этот UUID не равен Windows GUID guid; в противном случае возвращает false.
bool QUuid::operator<(const QUuid &other) const
Возвращает true , если этот QUuid имеет такое же поле варианта, как QUuid other и лексикографически предшествует QUuid other. Если QUuid other имеет другое поле варианта, возвращаемое значение определяется сравнением двух вариантов.
См. также variant().
QUuid &QUuid::operator=(const GUID &guid)
Присваивает Windows guid объекту Qt QUuid.
Предупреждение: Эта функция предназначена только для платформ Windows.
bool QUuid::operator==(const QUuid &other) const
Возвращает true , если этот QUuid и QUuid other идентичны; в противном случае возвращает false.
bool QUuid::operator==(const GUID &guid) const
Возвращает true , если этот UUID равен Windows GUID guid; в противном случае возвращает false.
bool QUuid::operator>(const QUuid &other) const
Возвращает true , если этот QUuid имеет такое же поле варианта, как QUuid other и лексикографически следует за QUuid other. Если QUuid other имеет другое поле варианта, возвращаемое значение определяется сравнением двух вариантов.
См. также 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 имеет такое же поле варианта, как rhs, и не лексикографически следует за rhs. Если rhs имеет другое поле варианта, возвращаемое значение определяется сравнением двух вариантов.
Эта функция была добавлена в Qt 5.5.
См. также variant().
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/archives/qt-5.6/quuid.html