Tengo datos binarios en un archivo que puedo leer en una matriz de bytes y procesar sin ningún problema. Ahora necesito enviar partes de los datos a través de una conexión de red como elementos en un documento XML. Mi problema es que cuando convierto los datos de una matriz de bytes a una Cadena y vuelvo a una matriz de bytes, los datos se corrompen. He probado esto en una máquina para aislar el problema de la conversión de cadena, así que ahora sé que no se está corrompiendo con el analizador XML o el transporte de red.¿Cómo se convierten datos binarios a cadenas y viceversa en Java?
Lo que tengo en este momento es
byte[] buffer = ...; // read from file
// a few lines that prove I can process the data successfully
String element = new String(buffer);
byte[] newBuffer = element.getBytes();
// a few lines that try to process newBuffer and fail because it is not the same data anymore
¿Alguien sabe cómo convertir binario a cuerdas y volver sin pérdida de datos?
Respondido: Gracias Sam. Me siento como un idiota. Ayer respondí esto porque mi analizador SAX se quejaba. Por alguna razón, cuando me encontré con este tema aparentemente separado, no se me ocurrió que era un nuevo síntoma del mismo problema.
EDIT: Sólo por el bien de la exhaustividad, utiliza la clase Base64 del paquete Apache CommonsCodec para resolver este problema.