Як користуватися
- Виберіть «Текст → байти», щоб закодувати текст, або «Байти → текст», щоб декодувати.
- Виберіть формат байтів: двійковий, шістнадцятковий, десятковий або вісімковий.
- Введіть або вставте дані. Результат і кількість байтів оновлюються під час введення.
- Скопіюйте результат або перенесіть його у поле введення, щоб перевірити зворотне перетворення.
Як це працює
Комп’ютери зберігають текст у вигляді байтів. Цей інструмент використовує UTF-8 — кодування, яке застосовують майже всі вебсайти й сучасні системи. У UTF-8 кожен із 128 символів ASCII (англійські літери, цифри й основні розділові знаки) займає один байт, тому H у двійковому вигляді — це 01001000, а в шістнадцятковому — 48. Усі інші символи займають від двох до чотирьох байтів: é — 2 байти (C3 A9), € і ☕ — 3 байти, а більшість емодзі — 4 байти. Тому кількість байтів може перевищувати кількість символів, а один символ може перетворюватися на кілька груп із 8 бітів.
Кожен байт можна записати чотирма поширеними способами: 8-значним двійковим числом (00000000–11111111), 2-значним шістнадцятковим (00–FF), десятковим (0–255) або 3-значним вісімковим (000–377). Якщо байти записано без роздільників, двійкові, шістнадцяткові й вісімкові значення доповнюються до фіксованої довжини, а десяткові — до 3 цифр, щоб їх можна було однозначно розділити.
Декодер допускає різне форматування: пробіли, переноси рядків, коми й крапки з комою між байтами ігноруються, так само як префікси 0x і 0b та екрановані послідовності \x. Перевіряється кожна група; якщо цифра не дозволена у вибраному форматі або значення перевищує 255, буде вказано позицію байта. Після декодування байти перевіряються на відповідність UTF-8, і ви побачите повідомлення, якщо вони не є текстом.
Складені символи з кількох кодових точок, як-от прапори чи емодзі з відтінками шкіри, тут рахуються як кілька символів, оскільки кожна кодова точка кодується окремо.
Приклади
Класичне “Hi” у двійковому вигляді
H у ASCII має значення 72, а i — 105, тому “Hi” у двійковому вигляді — це 01001000 01101001, у шістнадцятковому — 48 69, а в десятковому — 72 105: 2 символи, 2 байти, 16 бітів.
Чому “Café” займає 5 байтів
C, a і f займають по одному байту, а é у UTF-8 — два байти: 11000011 10101001 (C3 A9). У слові 4 символи, але воно займає 5 байтів. Це важливо зважати на обмеження стовпців бази даних і поля протоколів, розмір яких вимірюється в байтах.
Як прочитати дамп у шістнадцятковому форматі
Налагоджувач показує 48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8c. Вставте цей рядок, виберіть “Байти → текст” і шістнадцятковий формат, щоб отримати “Hello, 世界”; кожен китайський символ займає 3 байти.
Поширені запитання
Чому один символ перетворюється на 16, 24 або 32 біти?
У UTF-8 лише символи ASCII займають один байт (8 бітів). Літери з діакритичними знаками й більшість інших алфавітів займають 2 байти, китайські, японські, корейські символи та багато інших знаків — 3, а емодзі — 4. Кожен байт показується окремою групою.
Це ASCII чи UTF-8?
UTF-8. Для звичайного англійського тексту результат такий самий, як в ASCII, адже UTF-8 розроблено сумісним із ним. Символи поза ASCII неможливо представити лише засобами ASCII.
Чому під час декодування двійкового коду виникає помилка?
Кожен байт має містити не більше 8 двійкових цифр — лише 0 і 1. Якщо пробілів немає, загальна кількість цифр має бути кратною 8. У повідомленні про помилку вказано номер байта, який не вдалося прочитати.
Що означає «некоректний UTF-8»?
Байти не утворюють коректних послідовностей UTF-8, наприклад окремий байт зі значенням понад 127 або послідовність, обірвана посередині. Дані можуть походити з файлу в іншому кодуванні, наприклад Windows-1252, або взагалі не бути текстом.
Конфіденційність
Перетворення виконується у вашому браузері за допомогою вбудованих кодера й декодера UTF-8. Ваш текст не завантажується на сервер, не зберігається й не передається в аналітику.