Text a kód / Návody

Dvojková, šestnástková a desiatková sústava: je vstup číslom alebo textom?

Postupnosť číslic môže pomenovať číslo alebo vyhláskovať bajtové hodnoty textovej správy. Pred konverziou sa rozhodnite, aký výklad máte.

Celé číslo zostane rovnaké

Desiatkové číslo 65, dvojkové 1000001 a šestnástkové 41 sú tri zápisy toho istého nezáporného celého čísla. Základ číselnej sústavy mení zápis, nie samotnú hodnotu. Zadajte 65 do vloženého prevodníka z desiatkovej do dvojkovej sústavy a potom skúste prevod do šestnástkovej sústavy. Nula na začiatku môže doplniť zápis na celý osembitový bajt, teda 01000001, no číselnú hodnotu nemení. Opačný prevodník vie výsledok overiť. Takýto postup sa hodí, ak zdroj jednoznačne predstavuje celé číslo, napríklad počet alebo bitovú masku.

Text najprv potrebuje kódovanie znakov

Písmeno A je textový znak. UTF-8 ho predstavuje s jedným bajtom 0x41, ktorého bitový vzor je 01000001. To sa zhoduje s príkladom celého čísla vyššie, pretože znaky ASCII zaberajú tieto bajtové hodnoty v UTF-8. Ale reťazec „65“ obsahuje dva znaky, 6 a 5; jeho UTF-8 bajty sú 0x36 a 0x35. Spustenie prevodníka čísel na 65 a prevodníka textu na bajty na „65“ preto odpovedá na rôzne otázky. Skontrolujte, či zdroj znamená číselnú hodnotu alebo doslovné písané znaky.

Rovnaké znaky môžu znamenať číslo alebo bajty textu.
  1. Celé číslo: 65₁₀ = 41₁₆ = 1000001₂
  2. Text „A“ → bajt UTF-8: 41₁₆
  3. Text „65“ → bajty UTF-8: 36 35₁₆

Text s diakritikou odhaľuje rozdiel

Znak é je v UTF-8 reprezentovaný dvoma bajtmi, C3 A9 v šestnástkovej sústave. Jeho kódový bod Unicode je U+00E9 a môže byť vyjadrený aj písmenom e, za ktorým nasleduje kombinačný prízvuk v inej normalizovanej forme. Nástroj na prevod textu na binárne môže zobraziť dve osembitové skupiny pre zložený podobu v UTF-8, a nie jednu osembitovú skupinu pre jedno viditeľné písmeno. Zaobchádzanie s kódovým bodom znaku, ako keby to bol jeden bajt, by stratilo informácie alebo vytvorilo nesprávny výstup. Pri riešení problémov s textovým protokolom použite bajtové zobrazenie UTF-8, nie nástroj pre desiatkové až šestnástkové celé číslo.

Sledujte hranice a oddeľovače

Binárny reťazec 0100000101000010 možno čítať ako dva bajty, 01000001 a 01000010, čo znamená AB pod UTF-8. Bez známeho pravidla kódovania a zoskupovania znakov je holý bitový reťazec nejednoznačný. Desatinná 4142 nie je rovnaká ako hexadecimálna 4142 a ani jedna automaticky neznamená dva textové bajty. Predpony ako 0x pre hexadecimálne a explicitné medzery medzi bajtmi uľahčujú čítanie záznamu. Pred dekódovaním vložených údajov zachovajte ich pôvodné oddeľovače a zistite, či sú úvodné nuly významné v okolitom formáte.

Vyberte opakovateľnú kontrolu

Pri numerických prevodoch zaznamenajte pôvodné celé číslo a jeho základ, skonvertujte ho a potom ho obráťte pomocou zodpovedajúceho numerického nástroja. V prípade textu zaznamenajte znaky, ich normalizáciu, ak je to relevantné, a ich bajty UTF-8, potom bajty dekódujte pomocou nástroja zodpovedajúceho textu. Vyskúšajte A, 65 a é ako tri samostatné testovacie vstupy. Ak skopírovaný výstup vyzerá prekvapivo dlho, spočítajte bajty a skontrolujte, či vstup obsahuje medzery, nový riadok alebo iné znaky ako ASCII. Tieto dva pracovné toky sa môžu stretnúť v bajtovej hodnote, ale ich interpretácia vychádza zo zdrojovej zmluvy.

Keď výpis protokolu obsahuje zápis 41, doplňte k nemu označenie sústavy a otázku, či ide o číslo alebo bajt textu. Hexadecimálne 41 predstavuje desiatkové 65; textové znaky „4“ a „1“ majú v UTF-8 dva samostatné bajty. Ak chýba tento kontext, správny prevodník sa nedá zvoliť len podľa vzhľadu vstupu. Krátky referenčný príklad s písmenom A pomáha odhaliť zámeny.

Vyskúšať konvertor

Preveďte celé číslo 65 na binárne a potom porovnajte text na bajty.

Preveďte celé desiatkové číslo na číslice dvojkovej sústavy bez obmedzenia veľkosti.

Otvoriť celý konvertor

Ďalšie návody

Návody na konverzie

Prezrieť návody