UTILS.
100% en el navegador
🔢

Codificar y decodificar Base62

Convierte enteros o cadenas de bytes hacia y desde Base62 compacto y seguro para URL (0-9A-Za-z), con soporte BigInt y una variante de alfabeto GMP, en el navegador.

— la salida aparece aquí —

Acerca de esta herramienta

La herramienta Base62 codifica números y cadenas de bytes en el alfabeto compacto de 62 símbolos 0-9A-Za-z y los decodifica de vuelta. Base62 es popular para IDs cortos, slugs de URL y enlaces acortados porque se mantiene seguro para URL sin los caracteres +, / o = que usa Base64. Toda la conversión se ejecuta localmente en tu navegador con JavaScript BigInt, de modo que valores arbitrariamente grandes son exactos y nada se sube.

El modo entero trata la entrada como un entero de precisión arbitraria (decimal, o hex con prefijo 0x): la codificación divide repetidamente entre 62 y antepone alphabet[remainder], y la decodificación calcula Σ alphabet.indexOf(ch)·62^position. El modo bytes trata los bytes de entrada (texto UTF-8 o hex) como un solo bignum big-endian y aplica la misma conversión base-62, pero también preserva los bytes cero iniciales al estilo Bitcoin-Base58: cada byte 0x00 inicial se convierte en un carácter '0' inicial de modo que los viajes de ida y vuelta no tengan pérdidas.

El alfabeto estándar ordena dígitos, luego mayúsculas, luego minúsculas (0-9A-Za-z). Algunas bibliotecas — notablemente las basadas en GMP — ordenan dígitos, minúsculas, luego mayúsculas (0-9a-zA-Z), lo que produce una salida diferente para el mismo valor; el conmutador de alfabeto te permite coincidir con el que use tu sistema. Elige la dirección, el modo entero o bytes, el formato de entrada para bytes y la variante de alfabeto.

Preguntas frecuentes

¿Cuál es la diferencia entre el modo entero y el modo bytes?
El modo entero convierte un único número de precisión arbitraria (decimal o hex 0x) a una cadena Base62 y de vuelta a un entero decimal. El modo bytes convierte una secuencia de bytes (desde texto UTF-8 o hex) como un bignum big-endian, y preserva los bytes cero iniciales como caracteres cero-del-alfabeto iniciales de modo que los datos binarios hagan el viaje de ida y vuelta exactamente.
¿Por qué hay dos alfabetos?
El alfabeto estándar es 0-9A-Za-z (mayúsculas antes que minúsculas). Las bibliotecas basadas en GMP usan 0-9a-zA-Z (minúsculas antes que mayúsculas). El mismo valor se codifica de forma diferente bajo cada uno, así que el conmutador te permite interoperar con el orden que esperen tus otras herramientas.
¿Qué tan grande puede ser el número que maneja?
Cualquier tamaño. La herramienta usa JavaScript BigInt, así que no hay límite de precisión de 2^53 — puedes codificar y decodificar enteros y cadenas de bytes de longitud arbitraria exactamente, lo cual es esencial para hashes, UUIDs e identificadores largos.
¿Cómo se manejan los ceros iniciales en el modo bytes?
Cada byte 0x00 inicial se codifica como un carácter cero-del-alfabeto inicial (como el '1' inicial de Base58). Al decodificar, cada carácter cero-del-alfabeto inicial restaura un byte 0x00, de modo que codificar y luego decodificar devuelve la secuencia de bytes original exacta.

Más herramientas