<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT blog &#187; kódování</title>
	<atom:link href="http://szj.cz/tag/kodovani/feed/" rel="self" type="application/rss+xml" />
	<link>http://szj.cz</link>
	<description>internet, linux, novinky, programování</description>
	<lastBuildDate>Sat, 12 Sep 2015 11:14:32 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>UTF-16 a binární reprezentace</title>
		<link>http://szj.cz/utf-16-a-binarni-reprezentace/</link>
		<comments>http://szj.cz/utf-16-a-binarni-reprezentace/#comments</comments>
		<pubDate>Sun, 16 Dec 2012 15:39:04 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Ostatní]]></category>
		<category><![CDATA[big-endian]]></category>
		<category><![CDATA[endianita]]></category>
		<category><![CDATA[kódování]]></category>
		<category><![CDATA[little-endian]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[UTF-16]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=534</guid>
		<description><![CDATA[Následující článek navazuje na velmi podobný text, jenž popisoval převod do dvojkové soustavy v rámci kódování UTF-8.&#160;Z mého pohledu se&#160;transformace&#160;do binární reprezentace u UTF-16 provádí ještě jednodušeji než v případě UTF-8. Převádět budu slovo řepa&#160;a neobejdu se pochopitelně bez Unicode tabulky. Nejprve vyhledám znak ř. Dozvídám se hodnotu 15916 a ihned si spočítám podobu v [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Následující článek navazuje na velmi <a href="http://szj.cz/utf-8-a-binarni-i-hexadecimalni-reprezentace/">podobný text</a>, jenž popisoval převod do dvojkové soustavy v rámci kódování UTF-8.&nbsp;Z mého pohledu se&nbsp;transformace&nbsp;do binární reprezentace u UTF-16 provádí ještě jednodušeji než v případě UTF-8.</p>
<p>Převádět budu slovo <strong>řepa&nbsp;</strong>a neobejdu se pochopitelně bez <a href="http://unicode-table.com">Unicode tabulky</a>. Nejprve vyhledám znak <strong>ř</strong>. Dozvídám se hodnotu <strong>159<sub>16</sub></strong> a ihned si spočítám podobu v dvojkové soustavě &#8211; <strong>1 0101 1001<sub>2</sub></strong>. Nyní nastává fáze samotného kódování do UTF-16. S pomocí níže zobrazených pravidel nacházejících se například na <a href="http://cs.wikipedia.org/wiki/UTF-16#Zp.C5.AFsob_k.C3.B3dov.C3.A1n.C3.AD_znak.C5.AF">Wikipedii</a> určím počet dostupných bitů. Vkládat mohu pouze na místa označená jako <strong>x</strong>.</p>
<p>&nbsp;<a href="http://szj.cz/wp-content/uploads/2012/12/utf-16.png"><img class="aligncenter size-full wp-image-535" title="utf-16" src="http://szj.cz/wp-content/uploads/2012/12/utf-16.png" alt="UTF-16" width="535" height="82" /></a></p>
<p>Především si povšimněte, že v případě dvou bajtů ve své podstatě zapisuji pouze samotný binární kód. Teprve v případě čtyř bajtů nastupuje určitá forma režie. Písmeno <strong>ř</strong> tedy v UTF-16 vypadá takto &#8211;&nbsp;<strong>0000000101011001&nbsp;<sub>2</sub></strong>. Pro přehlednost a kratší zápis lze provést převod do šestnáctkové soustavy. Jak však patrně již správně tušíte, výsledek vypadá shodně jako zápis <strong>ř</strong> v Unicode, tedy <strong>0159<sub>16</sub></strong>. Obdobně postupuji i u dalších zbývajících znaků:</p>
<ul>
<li>ř &#8211;&nbsp;<strong>0000000101011001&nbsp;<sub>2</sub></strong> &#8211; <strong>0159<sub>16</sub></strong></li>
<li>e &#8211;&nbsp;<strong>0000000001100101&nbsp;<sub>2</sub></strong> &#8211; <strong>0065<sub>16</sub></strong></li>
<li>p &#8211;&nbsp;<strong>0000000001110000 &nbsp;<sub>2</sub></strong> &#8211; <strong>0070<sub>16</sub></strong></li>
<li>a &#8211;&nbsp;<strong>0000000001100001 &nbsp;<sub>2</sub></strong> &#8211; <strong>0061<sub>16</sub></strong></li>
</ul>
<p>&nbsp;K ověření doporučuji následující <a href="http://mlha.cz/unicode/utf8.php">nástroj</a>.</p>
<h2>Endianita</h2>
<p>Pro zajímavost dále uvedu, že UTF-16 v sobě nese informaci o použité endianitě. K tomuto účelu se využívá <a href="http://cs.wikipedia.org/wiki/UTF-8#BOM">BOM</a> (byte order mark). Existují dvě varianty:</p>
<ul>
<li><strong>big-endian</strong> &#8211; Na nejnižší adresu se ukládá nejvýznamnější bit. Následují další bity až po ten nejméně významný. V paměti proto nejprve narazíme na nejvýznamnější bit.</li>
<li><strong>little-endian</strong> &#8211; Nejnižší adresa obsahuje nejméně významný bit. Následující narůstající paměťové buňky slouží k ukládání bitů směrem k tomu nejvýznamnějšímu.</li>
</ul>
<p>Číslo <strong>0xAABBCCDD</strong> tedy bude uloženo následovně:</p>
<ul>
<li><strong>big-endian</strong> &#8211; <strong>AA</strong> <strong>BB</strong> <strong>CC</strong> <strong>DD</strong></li>
<li><strong>little-endian</strong> &#8211; <strong>DD</strong> <strong>CC</strong> <strong>BB</strong> <strong>AA</strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/utf-16-a-binarni-reprezentace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UTF-8 a binární i hexadecimální reprezentace</title>
		<link>http://szj.cz/utf-8-a-binarni-i-hexadecimalni-reprezentace/</link>
		<comments>http://szj.cz/utf-8-a-binarni-i-hexadecimalni-reprezentace/#comments</comments>
		<pubDate>Wed, 31 Oct 2012 16:36:49 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Ostatní]]></category>
		<category><![CDATA[kódování]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=463</guid>
		<description><![CDATA[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 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2012/10/utf-8-reprezentace.png"><img class="alignleft size-full wp-image-470" title="utf-8-reprezentace" src="http://szj.cz/wp-content/uploads/2012/10/utf-8-reprezentace.png" alt="UTF-8 a binární i hexadecimální reprezentace" width="128" height="128" /></a>Následující text pokrývá problematiku převodu textu do binární podoby v rámci kódování<strong> UTF-8</strong>. Pakliže toužíte vědět, jak výsledná informace vypadá, jste na správné adrese.</p>
<p>K převodu použiji krátké české slovo <strong>řepa</strong>. To se skládá ze čtyř znaků, což značí i počet nahlédnutí do <a href="http://cs.wikipedia.org/wiki/Unicode#Tabulka_.C4.8Desk.C3.BDch_znak.C5.AF_Unicode">Unicode tabulky</a>. Zaměřím se přitom na hexadecimální formát. V případě ř se dozvídám údaj 159<sub>16</sub>, jenž transformuji do binární podoby 1 0101 1001 <sub>2</sub>. 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 <a href="http://cs.wikipedia.org/wiki/UTF-8#Zp.C5.AFsob_k.C3.B3dov.C3.A1n.C3.AD_znak.C5.AF">Wikipedii</a>. Ta říká, že manipulovat lze pouze s pozicemi označenými jako <strong>x</strong>. K uložení devíti bitů tedy použiji dva bajty.</p>
<p><a href="http://szj.cz/wp-content/uploads/2012/10/utf-8.png"><img class="aligncenter size-full wp-image-464" title="utf-8" src="http://szj.cz/wp-content/uploads/2012/10/utf-8.png" alt="UTF-8" width="655" height="202" /></a></p>
<p>Momentálně proto stojím před následujícím problémem. Disponuji přiděleným prostorem <strong>110xxxxx 10xxxxxx</strong> a chci co něj vložit <strong>1 0101 1001</strong>. Musím přitom dodržet, aby se vpravo objevil <a href="http://cs.wikipedia.org/wiki/Nejm%C3%A9n%C4%9B_v%C3%BDznamn%C3%BD_bit">nejméně významný bit</a>. 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 <strong>1 01<span style="color: #ff0000;">01 1001</span></strong> tedy začínám vkládat z pravé strany a nejprve obohatím druhý bajt &#8211; <strong>110xxxxx 10<span style="color: #ff0000;">011001</span></strong>. Následně pokračuji vložením zbývající zeleně vyznačené části z&nbsp;<strong><span style="color: #00ff00;">1 01</span><span style="color: #ff0000;">01 1001</span></strong> do <strong>110xx<span style="color: #00ff00;">101</span> 10<span style="color: #ff0000;">011001</span></strong>. Jak nyní vidíte, mám dva volné bity, jenž nechci použít. Vložím proto nuly (<strong>110<span style="color: #0000ff;">00</span><span style="color: #00ff00;">101</span> 10<span style="color: #ff0000;">011001</span></strong>) a získávám binární reprezentaci znaku <strong>ř</strong> v kódování UTF-8. Pro přehlednost mohu výsledek převést do hexadecimální soustavy – <strong>C5 99</strong>.</p>
<p>Obdobným způsobem pokračuji i v případě znaků &#8218;<strong>e</strong>&#8218; &#8218;<strong>p</strong>&#8218; i &#8218;<strong>a</strong>&#8218;, jen si tentokrát vystačím s jediným bajtem.</p>
<p>Na závěr dostávám:</p>
<ul>
<li><strong>ř</strong> &#8211; C5 99<sub>16</sub> &#8211; 11000101 10011001<sub>2</sub></li>
<li><strong>e</strong> &#8211; 65<sub>16</sub> &#8211; 01100101<sub>2</sub></li>
<li><strong>p</strong> &#8211; 70<sub>16</sub> &#8211; 01110000<sub>2</sub></li>
<li><strong>a</strong> &#8211; 61<sub>16</sub> &#8211; 01100001<sub>2</sub></li>
</ul>
<p>K ověření lze využít <a href="http://mlha.cz/unicode/utf8.php">tento nástroj</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/utf-8-a-binarni-i-hexadecimalni-reprezentace/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
