Jak používat
- Vyberte „Text → bajty“ pro kódování nebo „Bajty → text“ pro dekódování.
- Zvolte formát bajtů: binární, šestnáctkový, desítkový nebo osmičkový.
- Zadejte nebo vložte vstup. Výsledek a počet bajtů se při psaní průběžně aktualizují.
- Zkopírujte výsledek nebo jej přeneste do vstupu a zkontrolujte zpětný převod.
Jak to funguje
Počítače ukládají text jako bajty. Tento nástroj používá UTF-8, kódování, které používá téměř každý web a moderní systém. V UTF-8 zabírá 128 znaků ASCII (anglická písmena, číslice a základní interpunkce) jeden bajt, takže H je binárně 01001000 a hexadecimálně 48. Všechny ostatní znaky zabírají dva až čtyři bajty: é má 2 bajty (C3 A9), € a ☕ mají 3 bajty a většina emoji má 4 bajty. Proto může být počet bajtů vyšší než počet znaků a proč se jeden znak může změnit na několik skupin po 8 bitech.
Každý bajt lze zapsat čtyřmi obvyklými způsoby: osmimístným binárním číslem (00000000–11111111), dvoumístným hexadecimálním číslem (00–FF), desítkovým číslem (0–255) nebo trojmístným osmičkovým číslem (000–377). Když se bajty zapisují bez oddělovačů, binární, hexadecimální a osmičkové hodnoty se doplní na pevnou šířku a desítkové hodnoty se doplní na 3 číslice, aby je bylo možné zase jednoznačně rozdělit.
Dekódování toleruje formátování: mezery, zalomení řádků, čárky a středníky mezi bajty se ignorují, stejně jako předpony 0x a 0b a escape sekvence \x. Každá skupina se kontroluje; číslice, která není v zvoleném formátu povolená, nebo hodnota vyšší než 255, se ohlásí s pozicí bajtu. Po dekódování se bajty zkontrolují, zda tvoří platné UTF-8, a pokud to není text, nástroj vás na to upozorní.
Znaky složené z více kódových bodů, jako jsou vlajky nebo emoji s odstínem pleti, se zde počítají jako více znaků, protože každý kódový bod se kóduje zvlášť.
Příklady
Klasické „Hi“ v binárním kódu
H je v ASCII 72 a i je 105, takže „Hi“ je binárně 01001000 01101001, hexadecimálně 48 69 a desítkově 72 105: 2 znaky, 2 bajty, 16 bitů.
Proč má „Café“ 5 bajtů
C, a a f mají po jednom bajtu, ale é má v UTF-8 dva bajty: 11000011 10101001 (C3 A9). Slovo má 4 znaky, ale zabírá 5 bajtů, na čemž záleží u limitů databázových sloupců a polí protokolů měřených v bajtech.
Čtení hexadecimálního výpisu
Debugger zobrazí 48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8c. Vložte je do „Bajty → text“ a zvolte hexadecimální formát, abyste dostali „Hello, 世界“; každý čínský znak má 3 bajty.
Časté dotazy
Proč se jeden znak změní na 16, 24 nebo 32 bitů?
V UTF-8 se do jednoho bajtu (8 bitů) vejdou pouze znaky ASCII. Diakritická písmena a většina ostatních abeced používají 2 bajty, čínština, japonština, korejština a mnoho symbolů používají 3 bajty a emoji používají 4 bajty. Každý bajt se zobrazuje jako vlastní skupina.
Je to ASCII, nebo UTF-8?
UTF-8. U prostého anglického textu je výsledek stejný jako u ASCII, protože UTF-8 byl navržen tak, aby s ním byl zpětně kompatibilní. Znaky mimo ASCII by nebylo možné vyjádřit pouze pomocí ASCII.
Proč se při dekódování binárních dat zobrazí chyba?
Každý bajt musí mít nejvýše 8 binárních číslic a obsahovat pouze 0 a 1. Bez mezer musí být celkový počet číslic násobkem 8. Chybová zpráva uvádí bajt, který se nepodařilo přečíst.
Co znamená „neplatné UTF-8“?
Bajty netvoří platné sekvence UTF-8, například osamocený bajt s hodnotou nad 127 nebo sekvence přerušená uprostřed. Data mohou pocházet ze souboru v jiném kódování, jako je Windows-1252, nebo nemusí jít o text vůbec.
Soukromí
Převod probíhá ve vašem prohlížeči pomocí vestavěného kodéru a dekodéru UTF-8. Váš text se neodesílá, neukládá ani nezahrnuje do analytiky.