Jak funguje převod mezi soustavami
Každý poziční číselný systém reprezentuje hodnotu jako součet číslic násobených mocninami základu. Změna základu znamená přepsání stejné hodnoty proti jiné mocninné řadě.
- Validace vstupní abecedy. Každý základ přijímá specifickou sadu číslic. Binární přijímá 0 a 1; osmičková přijímá 0-7; desítková přijímá 0-9; hex přijímá 0-9 a A-F. Znak mimo zvolenou abecedu zobrazí inline chybu před spuštěním jakéhokoli převodu.
- Parsování hodnoty. Pro hodnoty, které se vejdou do JavaScript Number (do 2^53-1), nástroj volá
parseInt(text, base). Nad touto hranicí padá zpět naBigInt, takže převod zůstává přesný pro libovolně velká celá čísla. - Překreslení v každém cílovém základu. Parsovaná hodnota je převedena do každého výstupního základu pomocí
Number.prototype.toString(base)neboBigInt.prototype.toString(base). Čtyři standardní panely (binární, osmičkový, desítkový, hex) a panel vlastního základu se aktualizují společně. - Aplikace formátování. Přepínač předpon přidává 0b, 0o nebo 0x před binární, osmičkový a hex výstup. Seskupování číslic vkládá podtržítko každé čtyři binární číslice a každé dvě hex číslice. Přepínač velikosti hex vybírá velká nebo malá písmena pro A-F.
- Živá synchronizace panelů. Úprava libovolného panelu spouští 100 ms debounced překonverzi, která aktualizuje ostatní panely. Panel, do kterého právě píšete, je považován za zdroj pravdy při každém stisku klávesy.
Proč používat převodník soustav
- Čtení výpisů paměti. Debugery, disassemblery a prohlížeče core dumpů zobrazují adresy a hodnoty registrů v hex. Převod na desítkové je činí srovnatelnými s počty, velikostmi a offsety hlášenými jinde ve stejném trace.
- Práce s barevnými kódy. CSS, designové nástroje a obrazové formáty zapisují barvy v hex trojicích jako #d2511a. Převod každého páru na desítkové mění stejnou barvu na rgb(210, 81, 26), kterou váš výběr barev nebo nástroj pro kontrolu přístupnosti očekává.
- Dekódování oprávnění souborů. Unix chmod hodnoty jsou psány v osmičkové: 755 znamená rwxr-xr-x, jakmile převedete každou osmičkovou číslici na její tři binární bity. Převodník zobrazí toto mapování v jednom kroku, takže můžete zkontrolovat sadu oprávnění bez hledání v man page.
- Ladění bitových flagů. Síťové protokoly, kernel syscally a hardwarové registry balí mnoho boolean flagů do jediného celého čísla. Čtení čísla v binárním zobrazení ukáže na první pohled, které bity jsou nastaveny, což je přesně to, co potřebujete, když zjišťujete, proč flag neúčinkuje.
Běžná použití
Převod soustav se objevuje v každodenní práci vývojářů, bezpečnostních specialistů a hardwarových inženýrů, kdykoli je číslo víc než jen počet.
- Vestavěný firmware: přečtěte hex dump z JTAG sondy, najděte adresu funkce a napište breakpoint příkaz s desítkovým offsetem, který váš debuggovací skript přijímá.
- Síťová bezpečnost: parsujte 32-bitovou síťovou masku vytištěnou v tečkované desítkové zpět na binární pro spočítání délky prefixu, pak napište CIDR formu pro ACL pravidlo.
- CTF hádanky a crypto výzvy: přepínejte mezi hex, desítkovou a binární při porovnávání uniklého fragmentu klíče proti kandidátskému plaintextu pod XOR.
Příklad
Napište 255 do desítkového panelu. Hex panel se aktualizuje na FF (nebo 0xFF s přepnutou předponou), binární panel na 11111111 (seskupeno jako 1111_1111) a osmičkový panel na 377. Přepněte základ vlastního panelu na 36 a stejná hodnota se zobrazí jako 73. Napište mnohem větší hodnotu jako 123456789012345678901234567890 do desítkového panelu; hex panel použije BigInt cestu a zobrazí 18EE90FF6C373E0EE4E3F0AD2.
FAQ
Co je číselná soustava?
Číselná soustava, neboli radix, je počet různých číslic, které poziční systém používá, než přenese do další pozice. Desítková (základ 10) používá 0-9; binární (základ 2) používá pouze 0 a 1; hexadecimální (základ 16) používá 0-9 plus A-F. Hodnota čísla se při změně soustavy nemění — mění se pouze způsob zápisu a seskupení číslic.
Proč používat hexadecimální v programování?
Jedna hex číslice se mapuje přesně na čtyři binární bity, takže dvě hex číslice pokrývají bajt a osm hex číslic pokrývá 32-bitové slovo. To dělá hex nejkompaktnější lidsky čitelnou formou pro paměťové adresy, obsah registrů, barevné trojice a kryptografické klíče. Čtení 0xFF je rychlejší než čtení 11111111 a bitový vzor je přímo tam, pokud ho potřebujete.
Mohu převádět nad základ 36?
Tento nástroj končí u základu 36, protože to je horní limit nativních JavaScript API parseInt a toString, která přijímají 0-9 následované A-Z jako abecedu číslic. Základy 37-62 jsou možné s vlastní abecedou (Base58 používaná v Bitcoin adresách je jeden příklad), ale jsou sledovány jako samostatný nástroj, protože každý vyšší základ potřebuje své vlastní kanonické řazení číslic.
Zpracovává to záporná čísla a desetinná čísla?
Záporná celá čísla jsou zobrazena s úvodním znaménkem minus v každé soustavě, stejné chování, které Number.prototype.toString dodává. Dvojkový doplněk napříč zvolenou bitovou šířkou (8, 16, 32, 64) je samostatný pohled, který plánujeme přidat. Převod desetinných čísel je také mimo rozsah této verze; nástroj zpracovává pouze celočíselné hodnoty.
Převod soustav je malá práce, která se znovu a znovu objevuje ve firmware, bezpečnosti a grafice. Dělat to v záložce prohlížeče, se stejnými aritmetickými primitivy, které Node a V8 již mají, udržuje práci rychlou a data na vašem stroji.