Text do binárního kódu a zpět, bajt po bajtu, v UTF-8

Binární kód

Přeložte text do binárního kódu a binární kód zpět do textu. Písmeno A je 01000001; slovo ahoj je 01100001 01101000 01101111 01101010. Háčky, čárky i emoji projdou tam i zpět beze ztráty, protože překladač používá stejné kódování jako váš prohlížeč.

Jak to použít

  1. Pište do levého pole. Každý znak se vpravo změní na jednu nebo více skupin osmi číslic oddělených mezerou, jedna skupina na bajt.

  2. Vložte skupiny osmi jedniček a nul do pravého pole a vlevo se objeví text. Skupiny, které nemají přesně osm binárních číslic, překladač přeskočí.

  3. Háčky, čárky i emoji projdou, protože překladač používá UTF-8, kódování celého webu. Písmeno s háčkem zabere dvě skupiny a emoji čtyři.

Co binární kód uchovává

Počítač ukládá čísla a dohoda určuje, které číslo je které písmeno. Základní dohodou, na které dnešní text stále stojí, je ASCII tabulka se 128 kódy, a nejpoužívanější je dnes Unicode, který čísluje přes sto tisíc znaků všech písem. Binární kód textu je posloupnost těchto čísel zapsaná ve dvojkové soustavě a seskupená do bajtů po osmi číslicích.

Unicode má mnohem více znaků, než se vejde do jednoho bajtu, a proto potřebuje pravidlo, jak velké číslo rozložit do několika bajtů. Tím pravidlem je UTF-8 a jeho autoři ho navrhli tak, aby 128 znaků ASCII zabíralo dál jediný bajt, totožný s tím starým. Slovo ahoj má proto čtyři skupiny pro čtyři písmena, 01100001 01101000 01101111 01101010, zatímco čaj má čtyři skupiny pro tři písmena: 11000100 10001101 01100001 01101010. Háček stojí jeden bajt navíc a překladač vrátí čaj beze ztráty.

Překladač na této stránce pracuje s bajty, a proto je převod zpět do textu vždy přesný, i u slova s háčkem. Skupiny, které nejsou osm číslic z jedniček a nul, ignoruje a nepokouší se je číst jako text.

Binární, šestnáctkový a tentýž bajt

Osm binárních číslic se špatně čte, a tak programátoři zapisují tentýž bajt šestnáctkově, dvěma číslicemi od 0 do F. Převod je přímý, čtyři bity na číslici: písmeno A je binárně 01000001 a šestnáctkově 41; ahoj je 61 68 6F 6A. ASCII tabulka na webu ukazuje oba zápisy každého kódu vedle desítkového.

Binární kód znaku zapisuje jeho číslo z tabulky znaků. Znak nula má v tabulce kód 48 a binárně je to 00110000, tedy osm číslic s jedničkami uvnitř. Kdo si překladačem chce ověřit počítání ve dvojkové soustavě, bude překvapený; překladač převádí text.

Tabulka

Tabulka uvádí písmena a číslice s jejich bajty v UTF-8. Bajty vygenerovala tatáž funkce, kterou používá překladač. První tři velká písmena ukazují vzor: stejná předpona a počítadlo na konci.

  • A 01000001
  • B 01000010
  • C 01000011
62 položek, vygenerovaných kódem
ZnakBajt
Velká písmena
A01000001
B01000010
C01000011
D01000100
E01000101
F01000110
G01000111
H01001000
I01001001
J01001010
K01001011
L01001100
M01001101
N01001110
O01001111
P01010000
Q01010001
R01010010
S01010011
T01010100
U01010101
V01010110
W01010111
X01011000
Y01011001
Z01011010
Malá písmena
a01100001
b01100010
c01100011
d01100100
e01100101
f01100110
g01100111
h01101000
i01101001
j01101010
k01101011
l01101100
m01101101
n01101110
o01101111
p01110000
q01110001
r01110010
s01110011
t01110100
u01110101
v01110110
w01110111
x01111000
y01111001
z01111010
Číslice
000110000
100110001
200110010
300110011
400110100
500110101
600110110
700110111
800111000
900111001

Časté otázky

Jak se písmeno zapisuje binárně?

Každý znak má v tabulce znaků číslo a překladač ho zapíše ve dvojkové soustavě osmi číslicemi. Velké A je 65, binárně 01000001. Malé a je o 32 více, 01100001: rozdíl mezi velkým a malým písmenem je jediný bit.

Proč osm číslic?

Protože se paměť počítače dělí na bajty po osmi bitech a bajt pojme čísla od 0 do 255. 128 znaků ASCII tabulky se vejde do sedmi bitů a osmý bit zůstal volný; UTF-8 tímto bitem označuje znaky, které potřebují více než jeden bajt.

Jak se binárně zapíšou háčky a emoji?

Znak mimo ASCII tabulku zabere v UTF-8 dva až čtyři bajty, každý zapsaný osmi číslicemi. Písmeno č jsou dva bajty: 11000100 10001101. Emoji usměvavé tváře jsou 4 bajty. Překladač vrátí původní text přesně, protože se cestou žádný bajt nezahazuje.

Je binární a šestnáctkový zápis totéž?

Oba zápisy vyjadřují tentýž bajt v jiné soustavě. Každé čtyři binární číslice odpovídají jedné šestnáctkové, takže bajt je osm binárních číslic nebo dvě šestnáctkové: písmeno A je binárně 01000001 a šestnáctkově 41. ASCII tabulka na webu ukazuje oba zápisy vedle sebe.

Je nula binárně nula?

Znak nula, ten v textu, má v tabulce znaků kód 48, binárně 00110000. Číslo nula, se kterým počítač počítá, je něco jiného. Záměna obou patří při prvním čtení binárního kódu k běžným omylům: zakódovaný je vždy znak a jeho číselná hodnota v kódu nikde není.