Celé číslo zůstane stejné
Desítkové číslo 65, dvojkové 1000001 a šestnáctkové 41 jsou tři zápisy stejného nezáporného celého čísla. Základ číselné soustavy mění zápis, ne samotnou hodnotu. Zadejte 65 do vloženého převodníku z desítkové do dvojkové soustavy a pak zkuste převod do šestnáctkové soustavy. Nula na začátku může doplnit zápis na celý osmibitový bajt, tedy 01000001, ale číselnou hodnotu nemění. Opačný převodník výsledek ověří. Takový postup se hodí, pokud zdroj jednoznačně představuje celé číslo, například počet nebo bitovou masku.
Text nejprve potřebuje kódování znaků
Písmeno A je textový znak. UTF-8 jej představuje jedním bytem 0x41, jehož bitový vzor je 01000001. To se náhodou shoduje s příkladem celého čísla výše, protože znaky ASCII zabírají tyto bajtové hodnoty v UTF-8. Ale řetězec „65“ obsahuje dva znaky, 6 a 5; jeho UTF-8 bajtů jsou 0x36 a 0x35. Spuštění převodníku čísel na 65 a převodníku textu na bajty na „65“ proto odpovídá na různé otázky. Zkontrolujte, zda zdroj znamená číselnou hodnotu nebo literálové psané znaky.
- Celé číslo: 65₁₀ = 41₁₆ = 1000001₂
- Text „A“ → bajt UTF-8: 41₁₆
- Text „65“ → bajty UTF-8: 36 35₁₆
Text s diakritikou odhaluje rozdíl
Znak é je v UTF-8 reprezentován dvěma byty, C3 A9 v šestnáctkové soustavě. Jeho kódový bod Unicode je U+00E9 a může být také vyjádřen jako e následované kombinačním přízvukem v jiné normalizované formě. Nástroj pro převod textu na binární může zobrazit dvě osmibitové skupiny pro složenou formu UTF-8, spíše než jednu osmibitovou skupinu pro jedno viditelné písmeno. Zacházení s kódovým bodem znaku, jako by to byl jeden bajt, by ztratilo informace nebo vytvořilo nesprávný výstup. Při odstraňování problémů s textovým protokolem používejte zobrazení UTF-8 bajtů, nikoli nástroj dekadických na šestnáctkové celé číslo.
Sledujte hranice a oddělovače
Binární řetězec 0100000101000010 lze číst jako dva bajty, 01000001 a 01000010, což znamená AB pod UTF-8. Bez známého pravidla pro kódování znaků a seskupování je holý bitový řetězec nejednoznačný. Desetinná 4142 není stejná hodnota jako šestnáctková 4142 a ani jedna automaticky neznamená dva textové bajty. Předpony jako 0x pro hexadecimální a explicitní mezery mezi bajty usnadňují čtení záznamu. Před dekódováním vložených dat zachovejte jejich původní oddělovače a zjistěte, zda jsou úvodní nuly významné v okolním formátu.
Vyberte opakovatelnou kontrolu
Pro numerické převody zaznamenejte původní celé číslo a jeho základ, převeďte je a poté je obraťte pomocí vhodného numerického nástroje. U textu zaznamenejte znaky, jejich normalizaci, je-li to relevantní, a jejich UTF-8 bajtů, poté bajty dekódujte pomocí nástroje pro odpovídající text. Zkuste A, 65 a é jako tři samostatné testovací vstupy. Pokud zkopírovaný výstup vypadá překvapivě dlouho, spočítejte bajty a zkontrolujte, zda vstup obsahoval mezery, nový řádek nebo jiné znaky než ASCII. Tyto dva pracovní postupy se mohou setkat s hodnotou bajtů, ale jejich interpretace vychází ze zdrojové smlouvy.
Když výpis protokolu obsahuje zápis 41, doplňte k němu označení soustavy a otázku, zda jde o číslo nebo bajt textu. Hexadecimální 41 představuje desítkové 65; textové znaky „4“ a „1“ mají v UTF-8 dva samostatné bajty. Pokud tento kontext chybí, správný převodník nelze zvolit jen podle vzhledu vstupu. Krátký referenční příklad s písmenem A pomáhá odhalit záměny.