Následující text pokrývá problematiku převodu textu do binární podoby v rámci kódování UTF-8. Pakliže toužíte vědět, jak výsledná informace vypadá, jste na správné adrese.
K převodu použiji krátké české slovo řepa. To se skládá ze čtyř znaků, což značí i počet nahlédnutí do Unicode tabulky. Zaměřím se přitom na hexadecimální formát. V případě ř se dozvídám údaj 15916, jenž transformuji do binární podoby 1 0101 1001 2. Nyní je třeba určit, kolik bajtů potřebuji k uložení. Jak patrně víte, jeden bajt uchová 8 bitů. V mém případě však binární číslo čítá 9 bitů. O slovo se však hlásí i určitá režie, jenž pomáhá identifikovat počet bajtů dané sekvence. Ke specifikování volného prostoru poslouží níže zobrazená tabulka, kterou naleznete na Wikipedii. Ta říká, že manipulovat lze pouze s pozicemi označenými jako x. K uložení devíti bitů tedy použiji dva bajty.
Momentálně proto stojím před následujícím problémem. Disponuji přiděleným prostorem 110xxxxx 10xxxxxx a chci co něj vložit 1 0101 1001. Musím přitom dodržet, aby se vpravo objevil nejméně významný bit. Ten se nachází na poslední pozici čísla v binárním tvaru. Ve své podstatě udává, zda-li mám to odčinění s lichým nebo kladným údajem. Nejméně přitom dokáže ovlivnit hodnotu čísla, například v desítkové reprezentaci. Můj údaj 1 0101 1001 tedy začínám vkládat z pravé strany a nejprve obohatím druhý bajt – 110xxxxx 10011001. Následně pokračuji vložením zbývající zeleně vyznačené části z 1 0101 1001 do 110xx101 10011001. Jak nyní vidíte, mám dva volné bity, jenž nechci použít. Vložím proto nuly (11000101 10011001) a získávám binární reprezentaci znaku ř v kódování UTF-8. Pro přehlednost mohu výsledek převést do hexadecimální soustavy – C5 99.
Obdobným způsobem pokračuji i v případě znaků ‚e‚ ‚p‚ i ‚a‚, jen si tentokrát vystačím s jediným bajtem.
Na závěr dostávám:
- ř – C5 9916 – 11000101 100110012
- e – 6516 – 011001012
- p – 7016 – 011100002
- a – 6116 – 011000012
K ověření lze využít tento nástroj.
Pingback: UTF-16 a binární reprezentace | IT blog