Paano gumagana ang base conversion
Ang bawat positional numeral system ay kumakatawan sa isang value bilang kabuuan ng mga digit na pinarami ng mga kapangyarihan ng base. Ang pagpapalit ng base ay nangangahulugang muli itong isulat ang parehong value laban sa ibang power series.
- I-validate ang input alphabet. Ang bawat base ay tumatanggap ng tiyak na hanay ng digit. Ang binary ay tumatanggap ng 0 at 1; ang octal ay tumatanggap ng 0-7; ang decimal ay tumatanggap ng 0-9; ang hex ay tumatanggap ng 0-9 at A-F. Ang isang character na wala sa piniling alphabet ay nagpapakita ng inline na error bago tumakbo ang anumang conversion.
- I-parse ang value. Para sa mga value na kasya sa JavaScript Number (hanggang 2^53-1) ang tool ay tumatawag ng
parseInt(text, base). Sa itaas ng hangganan na iyon, bumabalik ito saBigIntpara ang conversion ay manatiling eksakto para sa mga arbitraryong malalaking integer. - Muling i-render sa bawat target base. Ang parsed na value ay kino-convert sa bawat output base via
Number.prototype.toString(base)oBigInt.prototype.toString(base). Ang apat na standard na pane (binary, octal, decimal, hex) at ang custom-base pane ay nag-a-update nang sabay. - I-apply ang pag-format. Ang prefix toggle ay nagdaragdag ng 0b, 0o, o 0x sa harap ng binary, octal, at hex output. Ang digit grouping ay naglalagay ng underscore bawat apat na binary digit at bawat dalawang hex digit. Ang hex case toggle ay pumipili ng uppercase o lowercase na letra para sa A-F.
- Live cross-pane sync. Ang pag-edit ng anumang pane ay nag-ti-trigger ng 100 ms debounced re-conversion na nag-a-update ng ibang mga pane. Ang pane na iyong tina-type ay itinuturing na pinagmulan ng katotohanan sa bawat keystroke.
Bakit gamitin ang base converter
- Pagbabasa ng memory dump. Ang mga debugger, disassembler, at core-dump viewer ay nagpapakita ng mga address at register value sa hex. Ang pag-translate ng mga ito sa decimal ay nagpapahintulot sa kanilang ikumpara sa mga count, size, at offset na iniulat sa ibang lugar sa parehong trace.
- Pagtatrabaho sa mga color code. Ang CSS, design tool, at image format ay naglalagay ng kulay sa hex triplet tulad ng #d2511a. Ang pag-convert ng bawat pares sa decimal ay nagpapalit ng parehong kulay sa rgb(210, 81, 26) form na inaasahan ng iyong color picker o accessibility checker.
- Pag-decode ng file permission. Ang mga Unix chmod value ay nakasulat sa octal: ang 755 ay nangangahulugang rwxr-xr-x kapag isinalin mo ang bawat octal digit sa tatlong binary bit. Ipinapakita ng converter ang mapping na iyon sa isang hakbang para masuri mo ang permission set nang hindi kailangang kumuha ng man page.
- Pag-debug ng bit flag. Ang mga network protocol, kernel syscall, at hardware register ay naglalagay ng maraming boolean flag sa isang integer. Ang pagbabasa ng integer sa binary ay nagpapakita kung aling mga bit ang naka-set sa isang tingin, na kailangan mo kapag hinahanap mo kung bakit hindi epektibo ang isang flag.
Mga karaniwang gamit
Ang base conversion ay lumalabas sa pang-araw-araw na trabaho ng developer, security, at hardware tuwing ang isang numero ay higit pa sa simpleng bilang.
- Embedded firmware: basahin ang hex dump mula sa JTAG probe, hanapin ang address ng isang function, at sumulat ng breakpoint command gamit ang decimal offset na tinatanggap ng iyong debugger script.
- Network security: i-parse ang 32-bit netmask na naka-print sa dotted-decimal pabalik sa binary para bilangin ang prefix length, tapos isulat ang CIDR form para sa isang ACL rule.
- CTF puzzle at crypto challenge: mag-flip sa pagitan ng hex, decimal, at binary habang ikukumpara ang leaked key fragment sa isang candidate plaintext sa ilalim ng XOR.
Isang natapos na halimbawa
I-type ang 255 sa decimal pane. Ang hex pane ay nag-a-update sa FF (o 0xFF kapag naka-on ang prefix toggle), ang binary pane sa 11111111 (nakagrupo bilang 1111_1111), at ang octal pane sa 377. I-switch ang custom-pane radix sa 36 at ang parehong value ay nire-render bilang 73. Mag-type ng mas malaking value tulad ng 123456789012345678901234567890 sa decimal pane; ang hex pane ay gumagamit ng BigInt path at nire-render ng 18EE90FF6C373E0EE4E3F0AD2.
FAQ
Ano ang number base?
Ang number base, o radix, ay kung gaano karaming natatanging digit ang ginagamit ng isang positional system bago ito mag-carry sa susunod na posisyon. Ang decimal (base 10) ay gumagamit ng 0-9; ang binary (base 2) ay gumagamit lang ng 0 at 1; ang hexadecimal (base 16) ay gumagamit ng 0-9 kasama ang A-F. Ang value ng numero ay hindi nagbabago kapag nagpalit ka ng base — ang paraan lang ng pagsulat at paggrupo ng mga digit ang nagbabago.
Bakit ginagamit ang hexadecimal sa programming?
Ang isang hex digit ay nag-ma-map sa eksakto apat na binary bit, kaya dalawang hex digit ang sumasaklaw ng isang byte at walong hex digit ang sumasaklaw ng isang 32-bit word. Ginagawa nitong pinaka-compact na human-readable form ang hex para sa mga memory address, register content, color triplet, at cryptographic key. Mas mabilis ang pagbabasa ng 0xFF kaysa sa 11111111, at nandoon din ang bit pattern kung kailangan mo ito.
Maari ba akong mag-convert nang lampas sa base 36?
Humihinto ang tool na ito sa base 36 dahil iyon ang itaas na limitasyon ng native JavaScript parseInt at toString API, na tumatanggap ng 0-9 na sinusundan ng A-Z bilang digit alphabet. Ang mga base 37-62 ay posible sa custom alphabet (ang Base58 na ginagamit sa mga Bitcoin address ay isang halimbawa) pero sila ay itinatayang isang hiwalay na tool dahil ang bawat mas mataas na base ay nangangailangan ng sariling canonical digit ordering.
Hinahawakan ba nito ang mga negatibong numero at float?
Ang mga negatibong integer ay nire-render na may nangunguna na minus sign sa bawat base, ang parehong gawi na naka-ship sa Number.prototype.toString. Ang two's-complement representation sa loob ng piniling bit width (8, 16, 32, 64) ay isang hiwalay na view na plano naming idagdag. Ang floating-point base conversion ay nasa labas din ng scope ng bersyong ito; ang tool ay hinahawakan lang ang integer value.
Ang base conversion ay isang maliit na trabaho na paulit-ulit na lumalabas sa firmware, security, at graphics na trabaho. Ang paggawa nito sa isang browser tab, gamit ang parehong arithmetic primitive na naka-ship na sa Node at V8, ay nagpapanatiling mabilis ang trabaho at nananatili ang data sa iyong makina.