Загрузить файл
  1. base64hub
  2. Другие BaseN
  3. Base16 (hex)

Кодировщик и декодер Base16 (hex по RFC 4648)

Кодирует текст в Base16 по RFC 4648 (алфавит 0–9 и A–F, два символа на байт) или декодирует Base16 обратно в текст. Hello превращается в 48656C6C6F.

Бесплатно без регистрации и ограничений Локально ничего не загружается RFC 4648 алфавит из раздела 8, верхний регистр Обновлено 27 окт. 2026 г.
Ввод 0Байты 0 BРезультат 0

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как пользоваться кодировщиком Base16

  1. Введите или вставьте текст в поле ввода. Результат в Base16 обновляется по мере набора.
  2. Кодировка под полем ввода определяет, как символы превращаются в байты. По умолчанию это UTF-8.
  3. Чтобы декодировать, нажмите Base16 (RFC 4648) → Текст над инструментом или кнопку ⇄ Поменять местами, которая заодно переносит текущий результат в поле ввода. Строчные цифры, пробелы и двоеточия во вводе допускаются.
  4. Заберите результат кнопкой Скопировать результат или Скачать. Меню Из и В переключают на другие форматы, например Base32 или Base64, если нужно сравнить.

Если нужен hex с разделителями, префиксами 0x или строчными буквами, откройте Текст в hex: там есть эти опции.

Base16 и RFC 4648

RFC 4648 описывает Base64, Base32 и Base16 в одном документе, и Base16 из них самая простая: в ней нет ни дополнения, ни переносов строк, ни перегруппировки битов. Каждый байт делится на две 4-битные половины, и каждая половина соответствует одному символу. Тестовые векторы из самого RFC:

ВводBase16
(пусто)(пусто)
f66
fo666F
foo666F6F
foob666F6F62
fooba666F6F6261
foobar666F6F626172

Длина результата всегда ровно вдвое больше числа байтов, поэтому Base16 и не нужен символ дополнения. Base64 и Base32 группируют по нескольку байтов в блок и поэтому дополняют последний блок знаками =. В обзоре RFC указано, где описана каждая из этих кодировок.

Base16, Base32 и Base64

12 байт Hello, world в каждой кодировке RFC 4648:

КодировкаРезультатДлина
Base1648656C6C6F2C20776F726C6424
Base32JBSWY3DPFQQHO33SNRSA====24 (20 без дополнения)
Base64SGVsbG8sIHdvcmxk16

Base16 жертвует размером ради ясности. Байты читаются прямо с экрана, значения сравниваются цифра за цифрой, и такая запись проходит через любую систему, которая понимает буквы и цифры, в том числе нечувствительную к регистру. Base64 на треть короче, и его берут по умолчанию, когда байты передаются внутри JSON, писем или URL. В сравнении кодировок разобраны ещё Base58 и Base85.

Где встречается Base16

  • Хеши и контрольные суммы, которые sha256sum и похожие утилиты обычно печатают строчными.
  • Отпечатки ключей OpenPGP, которые GnuPG выводит в hex в верхнем регистре группами по четыре.
  • Тестовые векторы в RFC и других спецификациях, где однозначность байтовых значений важнее длины.
  • Протоколы и форматы, которым нужны данные без учёта регистра или только из букв и цифр.

Чтобы перевести такое значение в Base64, например хеш, который API ждёт в Base64, используйте Hex в Base64; Base64 в hex работает в обратную сторону.

Base16 в коде

import base64
base64.b16encode(b"Hello").decode()          # '48656C6C6F'
base64.b16decode("48656c6c6f", casefold=True)  # b'Hello'
printf 'Hello' | basenc --base16      # 48656C6C6F
echo 48656C6C6F | basenc --base16 -d  # Hello

basenc входит в GNU coreutils начиная с версии 8.31. В Node.js тот же результат даёт Buffer.from("Hello").toString("hex").toUpperCase(). Как те же модули работают с Base64, показано на страницах Python и Bash.

Вопросы и ответы

Base16 совпадает с шестнадцатеричной записью?

Для байтов да. Так RFC 4648 называет hex-кодирование: каждый байт превращается в два символа из 0123456789ABCDEF. RFC предписывает верхний регистр, а в повседневной практике hex часто пишут строчными.

Насколько Base16 больше исходных данных?

Ровно вдвое, то есть +100%. Base32 добавляет 60%, Base64 около 33%. Из кодировок RFC 4648 Base16 наименее компактная и самая читаемая.

Почему b16decode в Python отвергает мою строку?

base64.b16decode по умолчанию принимает только верхний регистр. Для строчных передайте casefold=True или используйте bytes.fromhex(), который понимает оба регистра и пробелы.