Cum funcționează conversia bazelor
Fiecare sistem de numerație pozițională reprezintă o valoare ca o sumă de cifre înmulțite cu puteri ale bazei. Schimbarea bazelor înseamnă rescrierea aceleiași valori față de o serie diferită de puteri.
- Validează alfabetul intrării. Fiecare bază acceptă un set specific de cifre. Binarul acceptă 0 și 1; octalul acceptă 0-7; zecimalul acceptă 0-9; hexa acceptă 0-9 și A-F. Un caracter în afara alfabetului ales generează o eroare inline înainte ca orice conversie să ruleze.
- Parsează valoarea. Pentru valorile care încap într-un Number JavaScript (până la 2^53-1), instrumentul apelează
parseInt(text, base). Peste această limită, recurge laBigInt, astfel încât conversia rămâne exactă pentru întregi arbitrar de mari. - Re-rendare în fiecare bază țintă. Valoarea parsata este convertită în fiecare bază de ieșire prin
Number.prototype.toString(base)sauBigInt.prototype.toString(base). Cele patru panouri standard (binar, octal, zecimal, hexa) și panoul cu bază personalizată se actualizează împreună. - Aplică formatarea. Un comutator de prefix adaugă 0b, 0o sau 0x la începutul ieșirii binare, octale și hexa. Gruparea cifrelor inserează o linie de subliniere la fiecare patru cifre binare și la fiecare două cifre hexa. Un comutator de majuscule hexa alege litere mari sau mici pentru A-F.
- Sincronizare live între panouri. Editarea oricărui panou declanșează o reconversie cu debounce de 100 ms care actualizează celelalte panouri. Panoul în care tastezi este tratat ca sursă de adevăr la fiecare apăsare de tastă.
De ce să folosești un convertor de baze
- Citirea dump-urilor de memorie. Depanatoarele, dezasamblatoarele și vizualizatoarele de core-dump arată adresele și valorile registrelor în hexa. Traducerea lor în zecimal le face comparabile cu numărătorile, dimensiunile și decalajele raportate în altă parte în aceeași urmărire.
- Lucrul cu coduri de culoare. CSS-ul, instrumentele de design și formatele de imagine redau culorile în triplete hexa precum #d2511a. Convertirea fiecărei perechi în zecimal transformă aceeași culoare în forma rgb(210, 81, 26) pe care o așteaptă selectorul de culori sau verificatorul de accesibilitate.
- Decodificarea permisiunilor de fișiere. Valorile chmod Unix sunt scrise în octal: 755 înseamnă rwxr-xr-x odată ce traduci fiecare cifră octală în cei trei biți binari corespunzători. Convertorul arată această mapare într-un singur pas, astfel încât poți verifica un set de permisiuni fără a consulta o pagină de manual.
- Depanarea fanioanelor de biți. Protocoalele de rețea, apelurile de sistem de kernel și registrele hardware împachetează multe fanioane booleene într-un singur întreg. Citirea întregului în binar arată care biți sunt setați dintr-o privire, ceea ce este exact ceea ce ai nevoie când cauți de ce un fanion nu intră în efect.
Aplicații comune
Conversia bazelor apare în munca zilnică a dezvoltatorilor, în securitate și în hardware ori de câte ori un număr este mai mult decât o simplă numărătoare.
- Firmware înglobat: citește un dump hexa de la o sondă JTAG, găsește adresa unei funcții și scrie o comandă de breakpoint folosind decalajul zecimal pe care scriptul tău de depanare îl acceptă.
- Securitate de rețea: parsează o mască de rețea de 32 de biți afișată în zecimal cu puncte înapoi în binar pentru a număra lungimea prefixului, apoi scrie forma CIDR pentru o regulă ACL.
- Puzzle-uri CTF și provocări criptografice: alternează între hexa, zecimal și binar în timp ce compari un fragment de cheie scurs cu un text candidat sub XOR.
Un exemplu practic
Tastează 255 în panoul zecimal. Panoul hexa se actualizează la FF (sau 0xFF cu comutatorul de prefix activat), panoul binar la 11111111 (grupat ca 1111_1111), iar panoul octal la 377. Comută rada panoului personalizat la 36 și aceeași valoare se redă ca 73. Tastează o valoare mult mai mare precum 123456789012345678901234567890 în panoul zecimal; panoul hexa folosește calea BigInt și redă 18EE90FF6C373E0EE4E3F0AD2.
FAQ
Ce este o bază numerică?
O bază numerică, sau radă, reprezintă câte cifre distincte folosește un sistem pozițional înainte de a trece la poziția următoare. Zecimalul (baza 10) folosește 0-9; binarul (baza 2) folosește doar 0 și 1; hexazecimalul (baza 16) folosește 0-9 plus A-F. Valoarea unui număr nu se schimbă atunci când schimbi bazele — doar modul în care cifrele sale sunt scrise și grupate.
De ce să folosești hexazecimal în programare?
O cifră hexa corespunde exact la patru biți binari, astfel încât două cifre hexa acoperă un octet, iar opt cifre hexa acoperă un cuvânt de 32 de biți. Acest lucru face hexa cea mai compactă formă lizibilă pentru adrese de memorie, conținuturi de registre, triplete de culoare și chei criptografice. Citirea 0xFF este mai rapidă decât citirea 11111111, iar modelul de biți este acolo dacă ai nevoie de el.
Pot converti dincolo de baza 36?
Acest instrument se oprește la baza 36, deoarece aceasta este limita superioară a API-urilor native JavaScript parseInt și toString, care acceptă 0-9 urmate de A-Z ca alfabet de cifre. Bazele 37-62 sunt posibile cu un alfabet personalizat (Base58 folosit în adresele Bitcoin este un exemplu), dar sunt urmărite ca instrument separat, deoarece fiecare bază mai mare are nevoie de propria ordonare canonică a cifrelor.
Acest instrument gestionează numere negative și flotante?
Întregii negativi sunt redați cu un semn minus în față în fiecare bază, același comportament pe care îl are Number.prototype.toString. Reprezentarea în complement față de doi pe o lățime de biți aleasă (8, 16, 32, 64) este o vizualizare separată pe care plănuim să o adăugăm. Conversia bazelor pentru flotante este, de asemenea, în afara domeniului acestei versiuni; instrumentul gestionează doar valori întregi.
Conversia bazelor este o sarcină mică care apare iar și iar în firmware, securitate și lucrul cu grafica. Făcând-o într-o filă de browser, cu aceleași primitive aritmetice pe care Node și V8 le au deja, menține munca rapidă și datele pe mașina ta.