Archiv pro štítek: UTF-8

UTF-8 a binární i hexadecimální reprezentace

UTF-8 a binární i hexadecimální reprezentaceNá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.

UTF-8

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.