Base64, Hex, codificación porcentual y Base85: elegir por transporte

Compare la sobrecarga de bytes, el escape y la interoperabilidad sin confundir la codificación de texto con la conversión de base numérica.

Una codificación es útil sólo si ambos extremos están de acuerdo. La representación más pequeña no es necesariamente la mejor opción cuando el receptor necesita un alfabeto familiar, la carga útil debe ser escrita por una persona o la sintaxis circundante trata ciertos caracteres de manera especial. Comience con el protocolo de recepción.

Hex es detallado pero fácil de inspeccionar.

Hexadecimal escribe cada byte como dos dígitos. La secuencia de bytes FF 00 41 se convierte en ff0041. Cada par tiene un límite de bytes visible, lo que ayuda a la hora de inspeccionar firmas de archivos, sumas de verificación y paquetes de protocolo. Duplica el número de caracteres, pero su pequeño alfabeto generalmente cabe fácilmente en registros y herramientas de depuración.

Base64 equilibra el tamaño y la interoperabilidad

Base64 representa tres bytes con cuatro caracteres. Es una opción común para campos binarios dentro de formatos basados ​​en texto. El estándar Base64 incluye más y barra; Base64URL reemplaza esos caracteres cuando un protocolo necesita un alfabeto diferente. Las reglas de relleno y espacios en blanco aún necesitan un acuerdo. Ninguno de los formularios le dice al receptor si los bytes decodificados son texto, una imagen o contenido comprimido.

La codificación porcentual pertenece a los componentes URL

La codificación porcentual escribe un byte escapado como %HH. No es simplemente un sustituto masivo de Base64. El componente determina qué caracteres deben tener caracteres de escape y el texto primero debe codificarse como UTF-8. Una barra diagonal puede separar segmentos de ruta mientras un signo de interrogación inicia una consulta; tratar todo el URL como un componente opaco cambia su significado.

console.log(encodeURIComponent('a+b / 中文'));
// a%2Bb%20%2F%20%E4%B8%AD%E6%96%87

Base85 necesita una variante exacta

Muchos esquemas Base85 representan cuatro bytes con cinco caracteres, pero sus alfabetos, delimitadores y casos especiales difieren. ASCII85 y Z85 no se pueden asumir como intercambiables. Z85 también impone requisitos de tamaño de bloque. Un alfabeto de alta densidad puede contener signos de puntuación que deben escaparse nuevamente en el formato circundante, lo que reduce el beneficio aparente.

No confunda estas codificaciones de bytes con la conversión del número entero 255 entre bases numéricas. Un archivo puede comenzar con cero bytes, mientras que una representación entera puede descartar esos ceros iniciales. Un códec de archivo reversible debe definir cómo se conservan la longitud y los ceros iniciales.

Utilice Hex para inspección de bytes, la variante Base64 especificada para transporte binario interoperable, codificación de componentes URL para URL y un esquema especializado solo cuando ambas partes implementen el mismo contrato. Compare el tamaño de un extremo a otro después del escape y la compresión. RFC 4648 define las familias estándar Base16, Base32 y Base64, incluidos sus distintos alfabetos.