Codificador y decodificador Base16 RFC 4648
Codifique texto en Base16 según el RFC 4648, el hexadecimal estándar en mayúsculas donde cada byte se convierte en dos caracteres: Hello pasa a 48656C6C6F. Al decodificar admite volcados con espacios o dos puntos y rechaza lo mal formado. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- Hello
- Modo de cálculo
- Encode
- Resultado
- 48656C6C6F
- Entrada
- Hello
- Base 16
- 48656C6C6F
- Hexadecimal
- 48656C6C6F
RFC 4648 Base16 es la codificación hexadecimal en mayúsculas estandarizada: cada byte de entrada se convierte en exactamente dos caracteres del alfabeto 0-9 y A-F, sin relleno y sin glifos ambiguos. Esta herramienta codifica texto UTF-8 plano a esa forma canónica de Base16 y decodifica cadenas hex Base16 de vuelta a texto, de modo que puede pegar en cualquiera de las dos direcciones sin instalar una biblioteca criptográfica. La codificación siempre emite dígitos en mayúsculas como exige el estándar; la decodificación acepta el ruido habitual al pegar, como espacios, dos puntos y mayúsculas y minúsculas mezcladas, y luego normaliza y valida antes de convertir.
Qué es RFC 4648 Base16 y cómo funciona el alfabeto
Base16 se define en RFC 4648 como una codificación de binario a texto que asigna cada octeto de ocho bits a dos símbolos de un alfabeto de dieciséis caracteres: los dígitos decimales del cero al nueve seguidos de las letras latinas mayúsculas de la A a la F. Ese alfabeto es idéntico a la conocida notación hexadecimal en mayúsculas usada en documentos de protocolos, trazas de paquetes y muchos manuales de hardware.
Al codificar, se recorre la entrada de izquierda a derecha, se divide cada byte en un nibble alto y uno bajo y se asigna cada nibble a un carácter del alfabeto, lo que produce una cadena cuya longitud es siempre el doble del número de bytes. No hay carácter de relleno ni regla de ajuste de línea en la codificación básica; los consumidores que necesitan saltos de línea o separadores los añaden solo para mostrar. La decodificación invierte la correspondencia: cada dos dígitos hex consecutivos se convierten en un byte.
Las implementaciones que declaran cumplir RFC 4648 codifican con A–F en mayúsculas; muchos decodificadores también aceptan a–f en minúsculas por interoperabilidad con herramientas que emiten mayúsculas y minúsculas mezcladas. Los espacios y separadores decorativos como dos puntos, guiones bajos o guiones suelen aparecer en volcados editados a mano y deben eliminarse antes de las comprobaciones de longitud y alfabeto; la cadena continua restante debe tener longitud par. Cuando aparece un carácter fuera de 0-9A-Fa-f, o cuando el número de dígitos es impar, el decodificador debe fallar con claridad.
Esta página está dirigida a quienes buscan un codificador Base16, un conversor hex RFC 4648 o codificar y decodificar hexadecimal en mayúsculas en línea; no es Base64, ni Base32, ni Base58, ni un conversor general de bases para enteros grandes arbitrarios.
Consejos prácticos, límites y en qué se diferencia de otras codificaciones
Las comprobaciones de ida y vuelta son la prueba de humo más rápida: codifique una palabra conocida como Hello, confirme el clásico resultado en mayúsculas 48656C6C6F, luego decodifique esa cadena y confirme que recupera la frase original byte a byte. Mantenga las cargas por debajo del límite de caracteres publicado; los volcados de varios megabytes pertenecen al trabajo sin conexión o a herramientas binarias dedicadas. Esta herramienta no es Base64 ni Base64URL: esos alfabetos usan sesenta y cuatro símbolos con relleno y un empaquetado más denso.
Tampoco es Base58, que elimina glifos ambiguos para la transcripción humana. Y no es un conversor de bases de enteros o flotantes: para convertir un solo número hex a decimal o binario, use las capacidades dedicadas de formatos numéricos en lugar de tratar los dígitos como una cadena de bytes opaca. Prefiera Base16 cuando necesite un volcado 1:1 visible por nibble que coincida con RFC 4648 y el hex de los libros; prefiera Base64 cuando la densidad importe más que la legibilidad.
Al enseñar, muestre la misma frase codificada en Base16 y Base64 una junto a otra para que los alumnos vean por qué el hex es más largo, siempre de longitud par, y por qué A–F en mayúsculas es la forma estandarizada en la Tabla 5 de RFC 4648.
Qué puede hacer con ella
Depuración de registros y trazas de paquetes pegados
Pegue volcados hex con espacios o dos puntos, decodifíquelos a texto legible cuando la carga es UTF-8, o vuelva a codificarlos tras editarlos para comprobaciones de ida y vuelta.
Enseñanza de RFC 4648 y notación hexadecimal
En clase se codifica Hello a 48656C6C6F, se inspecciona el alfabeto 0-9A-F y luego se fuerza una longitud impar o caracteres no válidos para mostrar la validación estricta.
Preguntas frecuentes
¿Qué alfabeto usa este codificador Base16?
El alfabeto Base16 de RFC 4648: 0123456789ABCDEF. La codificación siempre produce A–F en mayúsculas; la decodificación también acepta a–f en minúsculas y separadores comunes.
¿Es Base16 lo mismo que Base64?
No. Base16 asigna cada byte a dos dígitos hex de un alfabeto de dieciséis símbolos. Base64 usa sesenta y cuatro símbolos, un empaquetado más denso y caracteres de relleno opcionales.
¿Convierte enteros hex grandes a decimal?
No. Trata la entrada como una secuencia opaca de bytes según RFC 4648 Base16, no como un único entero de precisión múltiple. Use las herramientas de formatos numéricos para pasar números enteros de hex a decimal.
¿Es gratuito el codificador Base16?
La herramienta del navegador es gratuita y se ejecuta localmente.
¿Puedo decodificar hex con espacios, dos puntos o minúsculas?
Sí. Se eliminan los espacios, los dos puntos, los guiones bajos y los guiones, y se aceptan las minúsculas de la a a la f, así que un volcado copiado de un registro se decodifica tal cual. Lo que queda debe tener un número par de dígitos.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/base16-rfc4648 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base16-rfc4648", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base16-rfc4648",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base16-rfc4648", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base16-rfc4648", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "Hello"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base16_rfc4648",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_chars | 100000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Una entrada mal formada —un número impar de dígitos hex, un carácter fuera del alfabeto o bytes que no son UTF-8 válido— devuelve un error invalid_input claro en lugar de una corrupción silenciosa. El proceso es aritmética de bytes pura y determinista —sin red, sin semillas aleatorias, sin reloj—, de modo que el ejecutor gratuito del navegador y la API de prepago devuelven el mismo JSON siempre.
Cómo llamar a la API y qué contiene la respuesta
El modo predeterminado es encode: los bytes UTF-8 de text se convierten en una cadena Base16 en mayúsculas según el alfabeto de RFC 4648. El modo decode trata text como una carga Base16 —opcionalmente con espacios o separadores de dos puntos y mayúsculas mezcladas— y devuelve la cadena UTF-8 recuperada tras la normalización. Envíe un cuerpo JSON con un campo de cadena obligatorio text (alias input, value y data) y un mode opcional que es encode o decode. La longitud de entrada está limitada a cien mil caracteres para que una sola solicitud no pueda agotar la memoria del Worker con volcados patológicos. En caso de éxito con encode, la respuesta incluye mode, input, result además de base16 y hex con la misma cadena codificada, alphabet con la constante de dieciséis caracteres 0123456789ABCDEF, alphabet_name con el valor rfc4648_base16, standard con RFC 4648 Base16, input_bytes como el número de bytes UTF-8, output_length como el número de caracteres codificados y un mensaje breve en inglés. En caso de éxito con decode, la respuesta incluye mode, input, result y text con la cadena UTF-8 decodificada, base16_normalized con la forma continua en mayúsculas, los mismos campos alphabet y standard, input_length, output_bytes y un mensaje correspondiente. Una validación fallida —falta text, text que no es cadena, entrada demasiado larga, un mode desconocido, una longitud hex impar, un carácter Base16 no válido o bytes decodificados que no son UTF-8 válido— devuelve invalid_input y nunca se cobra. El precio es una tarifa plana de $0.002 por solicitud exitosa con unidad item y precio marginal por unidad cero.
Consejos prácticos, límites y en qué se diferencia de otras codificaciones
Envíe a propósito una cadena hex de longitud impar o un glifo no hex como G o Z en una solicitud decode para comprobar que su cliente gestiona invalid_input y el mensaje de error que nombra la regla. Las tareas fallidas que devuelven invalid_input no consumen saldo de prepago, lo que mantiene baratos los scripts exploratorios cuando prueba hex mal formado.
Casos de integración
Volcados hex de protocolos y fixtures en pruebas
Genere Base16 canónico en mayúsculas a partir de texto de fixtures y verifique que decode recupera los mismos bytes UTF-8 en CI sin dependencias criptográficas.
Preguntas técnicas
¿Qué ocurre si decodifico una cadena hex de longitud impar o con un carácter no hex?
La API devuelve invalid_input, explica la longitud impar o nombra el carácter incorrecto y su índice, y recuerda que Base16 necesita un número par de dígitos 0-9A-F. Las tareas fallidas no se cobran.