Separa el transporte del formato de datos
Base64, ASCII85, Base91 y los escapes hexadecimales permiten transportar bytes como texto; Avro, CBOR y Protobuf describen la estructura de la carga.
Elysia Tools
Navegación
Workflow Playbook
Convierte datos estructurados entre formatos binarios, codificaciones de transporte de texto y representaciones escapadas, con una comprobación de ida y vuelta verificable.
Temas
El error más frecuente con mensajes binarios es confundir la envoltura de texto con el formato de los datos. Documenta primero el origen, los límites del mensaje y el consumidor previsto: los valores estructurados se serializan a bytes y esos bytes a veces se representan como Base64, ASCII85, Base91 o texto hexadecimal escapado. Guarda cada capa por separado y no modifiques texto visible como si fuera JSON o UTF-8 mientras el formato interno siga sin confirmar.
Prepara una muestra base repetible. Debe incluir texto normal y no ASCII, decimales, nulos, bytes cero, objetos anidados y arrays. Registra la longitud original y algunos fragmentos hexadecimales de control para separar más adelante un fallo de serialización de un fallo de entrega.
Cuando el protocolo indique la representación externa, usa el convertidor correspondiente para recuperar los bytes. Si el origen es incierto, conserva la evidencia y comprueba la integridad de cada hipótesis; decodificar Base64 correctamente no demuestra que el interior sea JSON, pues puede contener Protobuf, CBOR o una trama propia de la aplicación.
Elige Avro, BSON, CBOR, Ion, MessagePack, Protobuf, Smile o UBJSON solo después de revisar los bytes, la documentación del emisor, el tipo de contenido, el schema o el código del receptor. En formatos con schema, la versión, los números de campo y los valores por defecto son parte del contrato y no detalles opcionales.
Convierte la muestra al formato destino y restáurala a una forma inspeccionable. Primero compara semántica: existencia de campos, tipos, precisión de números, Unicode, nulos, orden de arrays y anidamiento. Después comprueba límites: longitud del mensaje, bytes cero, campos binarios y fragmentos de control. Si dos codificaciones equivalentes pueden producir bytes distintos, define una comparación canónica antes de exigir igualdad literal.
Por último, vuelve a aplicar la envoltura requerida por el canal y decodifica de inmediato el resultado entregable. Esta comprobación final distingue un error de elección de serializador de un error de codificación de transporte y deja una cadena reproducible para el diagnóstico.
No consideres éxito la simple ausencia de error del convertidor. El consumidor destino o un decodificador compatible debe leer la salida; conserva la muestra, la versión del schema, el formato, la envoltura, la longitud y el resultado de la comparación. Los fallos comunes son tratar Base64 como formato interno, perder números de campo de Protobuf, recodificar bytes como texto o envolver dos veces un mensaje sin que el canal lo pida.
Si el receptor rechaza la carga, vuelve a la última capa validada: revisa si la envoltura está completa, si el schema coincide y si el formato es compatible; luego reduce el caso a una muestra mínima reproducible. Una trazabilidad clara de las tres capas es más fiable que probar convertidores al azar.
Guía de flujo de trabajo
Usa el convertidor que corresponda al protocolo o a la evidencia de la muestra para obtener bytes originales; registra la incertidumbre en vez de adivinar el formato.
Codifica o decodifica con un formato binario que el receptor soporte de verdad; junto con Avro o Protobuf conserva el schema, los números de campo y la versión.
Restaura la muestra desde el formato nuevo y compara campos, precisión numérica, Unicode, nulos, colecciones anidadas, longitud y bytes críticos antes de continuar.
Aplica una envoltura de texto solo cuando el canal la requiera y vuelve a decodificar el resultado para confirmar que entrega los bytes internos ya validados.
Base64, ASCII85, Base91 y los escapes hexadecimales permiten transportar bytes como texto; Avro, CBOR y Protobuf describen la estructura de la carga.
Usa un formato con schema, números de campo o evolución de contrato cuando el receptor lo exige; una cadena que parece Base64 no revela por sí sola la serialización interna.