Byte array -> String -> Conjunto de bytes

Estoy tratando de convertir byte [] a String y String a byte []. No recupero la misma matriz de bytes [].

byte[] bArray1 = myFunction(); System.out.println("array1 = " + bArray1.toString()); String str = new String(bArray1); byte[] bArray2 = str.getBytes(); System.out.println("array2 = " + bArray2.toString()); 

Después de ejecutar obtengo:

 array1 = [-15, -87, -44, 61, -115, 23, -3, 75, 99, 36, -49, 21, -41, -63, 100, -49] array2 = [-17, -65, -67, -17, -65, -67, 61, -17, -65, -67, 23, -17, -65, -67, 75, 99, 36, -17, -65, -67, 21, -17, -65, -67, -17, -65, -67, 100, -17, -65, -67, -17, -65, -67] 

¿Por qué sucede y cómo puedo obtener la misma matriz?

Este trabajo en mi computadora, pero no en mi Android:

 byte[] bArray1 = myFunction(); String str = Base64.encodeToString(bArray1, Base64.DEFAULT); byte[] bArray2 = Base64.decode(str, Base64.DEFAULT); 

He visto el artículo Hex-encoded String to Byte Array . Pero Android no tiene clase Hex.

Editado

Lo siento, estaba equivocado que Base64 no está funcionando.

Esto fue probado en android 2.3.3, 2.3.4, 4.2, 4.3 y funciona:

 byte[] bArray1 = myFunction(); String str = Base64.encodeToString(bArray1, Base64.DEFAULT); byte[] bArray2 = Base64.decode(str, Base64.DEFAULT); 

Debe ser capaz de resolver esto utilizando un ByteBuffer y un CharSet .

Android utiliza la codificación UTF-8 de forma predeterminada (puede comprobar esto con Charset.defaultCharset() ), por lo que necesita especificar que es así como desea codificar y decodificar sus cadenas.

 ByteBuffer buff = Charset.defaultCharset().encode(myString); byte[] bytes = buff.array(); CharBuffer charBuff = Charset.defaultCharset().decode(bytes); String original = charBuff.toString(); 

Esto debería funcionar.

Ejemplo de esta función podría ayudarle

Convertir cadena a matriz de bytes

 public static byte[] convertStirngToByteArray(String s) { byte[] byteArray = null; if(s!=null) { if(s.length()>0) { try { byteArray = s.getBytes(); } catch (Exception e) { e.printStackTrace(); } } } return byteArray; } 

Conversión de matriz de bytes en cadena

 public static String convertByteArrayToString(byte[] byteArray) { String s = null; if(byteArray!=null) { if(byteArray.length>0) { try { s = new String(byteArray,"UTF-8"); } catch (Exception e) { e.printStackTrace(); } } } return s; } 
  • ¿Cómo inserto un salto de línea en una cadena para mostrarlo en un widget Android TextView?
  • Ellipsize sólo una sección en un TextView
  • Cómo mostrar un formato doble como un precio en una vista de texto en android
  • String-array dentro de string-array
  • Android, ¿Cómo puedo convertir la cadena a la fecha?
  • Excepción OutOfMemory en la conversión de ByteArray a String?
  • Android - agregando una cadena sobre una imagen Drawable?
  • Android convertir Cadena a byte - tomar byte en las piezas
  • Comprobando si existe subobjeto en JSON
  • Necesito una cadena que empiece con el número de mi cadena de entrada
  • Enviar una cadena en Android con HttpPost sin usar nameValuePairs
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.