Прескочи към съдържанието

Двупосочен конвертор: Decimal, Hex, Base32, Base64

Конвертирайте числа между decimal, Base16 (hex), Base32 и Base64 в двете посоки, с автоматично разпознаване на системата. Кодирайте или декодирайте стойност.

Двупосочен конвертор на бази

Конвертиране между десетични числа и стандартни кодирания на бази (Base16/Hex, Base32, Base64). Въведете стойност във всяко поле, за да конвертирате.

Въведете положително цяло число (макс.: 9.007.199.254.740.991)

Въведете стойност, кодирана в Base16, Base32 или Base64

Относно кодиранията на бази

Base16 (Шестнадесетично): Използва символи 0-9 и A-F. Всеки символ представлява 4 бита. Често се използва за цветови кодове и адреси в паметта.
Base32: Използва символи A-Z и 2-7. Всеки символ представлява 5 бита. Нечувствителен към регистъра и лесен за четене.
Base64: Използва символи A-Z, a-z, 0-9, +, и /. Всеки символ представлява 6 бита. Често се използва за кодиране на двоични данни в текст.
Граница на безопасни цели числа: JavaScript може безопасно да представя цели числа до 9.007.199.254.740.991 (2^53 - 1) без загуба на точност.
Калкулатор за зареждане...
📚

Документация

Двунасочен конвертор на бройни основи

Конверторът на бройни основи променя начина, по който се записва дадено число, без да променя самото число. Този инструмент преобразува десетично число в Base16 (шестнадесетична система), Base32 или Base64, както и преобразува кодирана стойност обратно в десетично число. Той също така разпознава коя от трите кодировки използва поставената стойност.

Какво представлява бройната основа

Бройната основа, наричана още радикс, е броят на различните символи, които една бройна система използва за една цифра. Десетичната система е с основа 10 и използва цифрите от 0 до 9. Компютрите често съхраняват числата в други бройни основи, защото тези основи събират същата стойност в по-малко знаци или защото наборът от символи може безопасно да се изпраща чрез системи, работещи само с текст, като имейл или URL адрес.

Този инструмент работи с три такива бройни основи:

  • Base16 (шестнадесетична система). Използва 16 символа: 0–9 и A–F. Всеки знак съхранява 4 бита. Широко се използва в кодове за цветове, адреси в паметта и хеш стойности.
  • Base32. Използва 32 символа: A–Z и 2–7, определени от интернет стандарта RFC 4648. Всеки знак съхранява 5 бита. Избягва букви и цифри, които си приличат, като 0 и O, което улеснява прочитането на глас или ръчното изписване.
  • Base64. Използва 64 символа: A–Z, a–z, 0–9, + и /, също определени от RFC 4648. Всеки знак съхранява 6 бита. Това е стандартният начин за вграждане на двоични данни в текст, например при прикачен файл към имейл или поле в JSON.

Как се преобразува десетично число в Base16, Base32 или Base64

Инструментът първо разделя десетичното число на байтове — групи от 8 бита, записани в ред big-endian (първо най-значимият байт). След това прочита тези битове на групи с размер, съответстващ на целевата основа: по 4 бита за Base16, по 5 бита за Base32 или по 6 бита за Base64. Всяка група битове се сверява с таблицата от символи на съответната основа, за да се получи един изходен знак.

Тъй като Base32 и Base64 четат битовете на групи от 5 или 6, последната група в дадено число често не съвпада с граница на байт от 8 бита. Инструментът допълва оставащите битове с нули, а при Base32 и Base64 добавя в края знаци =, така че дължината на изхода винаги да е кратна на 8 знака (Base32) или 4 знака (Base64).

Base16 винаги използва цял брой двойки от 2 знака, по една двойка за всеки байт. Ако дадена стойност би изисквала нечетен брой шестнадесетични цифри, отпред се добавя нула, така че низът винаги да представлява цял брой байтове.

Формула и пример за Base16

Всеки байт се превръща точно в две шестнадесетични цифри, чиято стойност е 16 пъти първата цифра плюс втората:

v=a×16+bv = a \times 16 + b

където v е стойността на байта, a е първата шестнадесетична цифра, а b — втората.

Пример: 255 в десетична система. 255 се побира в един байт. 255 ÷ 16 = 15 с остатък 15, а 15 се записва като F, така че 255 се превръща в FF. Затова цветовият код #FFFFFF е бял: три байта, всеки от които е с максималната си стойност.

Пример: 1000 в десетична система. 1000 изисква два байта: 1000 = 3 × 256 + 232. Първият байт, 3, се превръща в 03. Вторият байт, 232, е 14 × 16 + 8, което се превръща в E8. Прочетено заедно, 1000 в Base16 е 03E8, а не 3E8 — шестнадесетичният изход винаги се допълва до цял брой байтове, така че стойност под 16 в старшия байт също получава водеща нула.

Примери за Base32 и Base64

Използвайки същите две числа като по-горе:

ДесетичнаBase16Base32Base64
255FF74======/w==
100003E8APUA====A+g=

Как се преобразува кодирана стойност обратно в десетично число

Поставете низ Base16, Base32 или Base64 в полето за кодирана стойност, след което изберете съответната основа от падащото меню до него. Инструментът проверява знаците спрямо азбуката на тази основа, изпълнява обратните стъпки и показва десетичната стойност. Декодирането на FF като Base16 дава 255.

Инструментът също посочва коя основа изглежда използва поставената стойност. Това име е само ориентир. Падащото меню все още определя как се прочита стойността, защото азбуката на Base16 е част от азбуката на Base32 и кратък низ като ABCD е допустима стойност и в двете.

Входът за Base16 може да смесва главни и малки букви; инструментът третира ff и FF по един и същ начин. Нечетен брой шестнадесетични цифри се прочита по разрядната им стойност, като се приема водеща нула, така че 1F4 и 01F4 дават 500. Входът за Base32 трябва да се изписва с главни букви: декодерът на инструмента не приема малки букви в Base32 и ще отчете грешка, ако ги срещне. Base64 третира главните и малките букви като различни символи, както изисква форматът, така че регистърът трябва да бъде изписан точно както е показан.

Някои низове не могат да бъдат получени от кодер и инструментът ги отхвърля, вместо да прави предположения. RFC 4648 изгражда Base64 на групи от 4 знака, а Base32 — на групи от 8. Като се пренебрегне запълването с =, низ Base64 с 1 знак след кратно на 4 или низ Base32 с 1, 3 или 6 знака след кратно на 8 не съдържа цял байт. Такъв вход предизвиква грешка, а не дава число.

Ограничения на диапазона

Най-голямото число, което инструментът приема, е 9,007,199,254,740,991, равно на 2^53 − 1. Това е най-голямото цяло число, което JavaScript двигателят на уеб браузър може да представи точно. Над тази граница някои цели числа вече не могат да се съхраняват прецизно, затова инструментът отчита грешка, вместо мълчаливо да върне неправилна цифра. Нулата и всяко цяло число до тази граница се приемат; числото не е нужно да бъде положително, а само неотрицателно.

Ограничението важи и в двете посоки. Кодиран низ, който представлява по-голямо число, като стойността Base16 20000000000000 (която е 2^53), се отхвърля, вместо да бъде закръглена. Дробните числа също се отхвърлят: кодировките описват цели байтове, така че 1.5 предизвиква грешка, а не закръглен резултат.

Къде се използва всяка кодировка

  • Base16 се среща в стойности за цветове в CSS и HTML, в MAC и IPv6 адреси и в хеш стойности, използвани за проверка дали даден файл не е променен.
  • Base32 се среща в ключове за настройване на двуфакторно удостоверяване, в някои системи за споделяне на файлове и в други идентификатори, предназначени за прочитане на глас или ръчно изписване.
  • Base64 се среща в URI адреси data:, прикачени файлове към имейли и уеб токени като JWT, навсякъде, където двоични данни трябва да преминат през система, създадена за текст.

Преобразуването между тези кодировки никога не променя основното число. То променя само броя на знаците, необходими за записването му, и системите, които могат безопасно да пренасят този текст.

Често задавани въпроси

Каква е разликата между Base16, Base32 и Base64? Те се различават по броя символи, които може да представя всеки знак: 16, 32 или 64. Повече символи на знак означават по-кратък кодиран низ за едно и също число, но за сметка на по-голяма азбука за разчитане.

Защо 1000 се кодира като 03E8, а не като 3E8 в Base16? Шестнадесетичният изход се допълва до цял брой байтове — по две шестнадесетични цифри на байт. 1000 изисква два байта, затова резултатът винаги съдържа четири шестнадесетични цифри, дори когато водещата цифра е нула.

Base32 нечувствителна ли е към регистъра? Азбуката на Base32 е дефинирана с главни букви. Декодерът на този инструмент приема само вход за Base32 с главни букви; малките букви предизвикват грешка.

Кое е най-голямото число, което конверторът може да обработи? 9,007,199,254,740,991, което е 2^53 − 1. Това е границата на точността за цели числа в JavaScript — езика, на който работи инструментът.

Мога ли да преобразувам отрицателно число? Не. Инструментът приема само цели числа, равни на нула или по-големи от нула.

Защо инструментът отхвърля някои низове, които изглеждат като валиден Base64? Base64 се записва на групи от 4 знака, така че стойност, чиято дължина е с 1 повече от кратно на 4, не кодира цял байт. Никой кодер не може да я създаде, затова инструментът отчита грешка, вместо да върне число.

Променя ли преобразуването на число между бройни основи неговата стойност? Не. Променя се само записът му. 255, FF, 74====== и /w== представляват едно и също число.