UUID UUID Generator

Бесплатно · Без регистрации · Без установки

Сколько символов в UUID?

36 символов при копировании, 32 hex-цифры без дефисов, 16 байт в базе и 128 бит в основе. Разбираем, откуда берётся каждое число и что из этого можно сократить.

  • 36 символов канонически
  • 32 hex-цифры
  • 128 бит данных

Генератор UUID v4

v4
От 1 до 1000.
Форматирование

Результат 0

    Создаётся локально через Web Crypto API — данные не покидают ваш браузер. Быстро: Ctrl + Enter — Обновлено

    Что такое Сколько символов в UUID?

    UUID — это значение размером 128 бит. В канонической записи оно занимает 36 символов: пять групп из 8, 4, 4, 4 и 12 шестнадцатеричных цифр, разделённых четырьмя дефисами. Уберите дефисы — останется 32 символа, то есть ровно 32 × 4 = 128 бит без потерь и добавлений.

    В родном виде это 16 байт: тип uuid в PostgreSQL, uniqueidentifier в SQL Server, BINARY(16) в MySQL. Именно эту форму стоит предпочитать: она более чем вдвое меньше текстовой и сравнивается намного быстрее, потому что база сравнивает 16 байт, а не разбирает строку из 36 символов.

    Не все 128 бит — полезная нагрузка. Шесть из них служебные: четыре бита хранят версию, два — вариант. В UUID v4 остаётся 122 случайных бита. Это по-прежнему огромное пространство — 5.3 × 1036 возможных значений, — но именно поэтому энтропию v4 указывают как 122, а не 128.

    Как использовать

    1. Копируйте канонические 36 символов для людей, документации и конфигов.
    2. Убирайте дефисы для логов, компактных ключей и всего, что должно попадать в фиксированную ширину.
    3. Храните 16 байт в родном типе, если столбец индексируется; а разбор длины ниже пригодится, когда спросят, почему UUID — не 128 символов.

    Сценарии

    • Выбор типа столбца: CHAR(36) против родных 16 байт — от этого зависит размер индекса.
    • Логи фиксированной ширины, где нужно знать заранее, 32 символа в поле или 36.
    • Решения по интерфейсу: зная, что v4 занимает 36 символов, проще понять, обрезать его в таблице или показывать целиком.

    Сравнение Сколько символов в UUID? с другими форматами

    ВариантКогда использовать
    36 символовКанонические <code>8-4-4-4-12</code> с дефисами. То, что видно и копируется.
    32 символаТо же значение без дефисов; по-прежнему 128 бит.
    16 байтРодное хранение в <code>uuid</code>, <code>uniqueidentifier</code> или <code>BINARY(16)</code>.
    22 символаBase64url — те же 16 байт, самая короткая текстовая форма без потерь.
    128 битПолезная нагрузка: 122 случайных бита в v4 плюс 6 на версию и вариант.

    Примеры кода

    Длина в коде

    import uuid
    
    u = uuid.uuid4()
    len(str(u))      # 36
    len(u.hex)       # 32
    len(u.bytes)     # 16, байты
    u.int            # 128-битное целое
    
    # Base64url — самая короткая текстовая форма без потерь
    import base64
    len(base64.urlsafe_b64encode(u.bytes).rstrip(b'='))   # 22

    Размер столбца

    -- PostgreSQL: родной тип, 16 байт на диске
    CREATE TABLE items (id uuid PRIMARY KEY DEFAULT gen_random_uuid());
    
    -- MySQL: BINARY(16) вместо CHAR(36)
    CREATE TABLE items (id BINARY(16) PRIMARY KEY);
    
    -- SQL Server: UNIQUEIDENTIFIER вместо VARCHAR(36)
    CREATE TABLE items (id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID());

    Сокращение UUID

    // 36 символов -> 22 без потерь
    const hex = '550e8400e29b41d4a716446655440000';
    const b64 = Buffer.from(hex, 'hex').toString('base64url');
    console.log(b64.length);   // 22

    Частые вопросы

    Почему в UUID 36 символов, а не 32?

    Дефисы добавлены для читаемости: четыре разделителя превращают 32 hex-цифры в пять групп, которые гораздо проще просматривать и вычитывать. Само значение — 32 hex-цифры; уберите дефисы, и ничего, кроме записи, не изменится.

    Сколько символов в GUID?

    Столько же — 36 в форме D по умолчанию. В .NET есть и другие варианты: N — 32 символа без дефисов, B — 38 с фигурными скобками, P — 38 с круглыми, X — 68, потому что каждый байт записывается с префиксом 0x.

    Можно ли сделать UUID короче?

    Да, двумя способами. Без потерь: закодируйте те же 16 байт в base64url — получится 22 символа, и обратное преобразование даст исходное значение. С потерями: отбросьте байты — 12 байт дают 16 символов и 96 бит энтропии, 8 байт — 11 символов и 64 бита, что нормально для кеша, но слабо для постоянных ключей.