Foros del Web » Programación para mayores de 30 ;) » Java »

Encode String // Decode byte[]

Estas en el tema de Encode String // Decode byte[] en el foro de Java en Foros del Web. Buenas a todos. Tengo un vector de byte[] y lo quiero pasar a String . Luego ese String lo quiero pasar de nuevo a byte[]. ...
  #1 (permalink)  
Antiguo 17/05/2007, 10:50
 
Fecha de Ingreso: marzo-2006
Mensajes: 2
Antigüedad: 18 años, 2 meses
Puntos: 0
Encode String // Decode byte[]

Buenas a todos.
Tengo un vector de byte[] y lo quiero pasar a String. Luego ese String lo quiero pasar de nuevo a byte[]. ¿Cuál es mi sorpresa? ¡¡¡Qué no son iguales!!! El código que utilizo es:
Código:
public static void main(String[] args) {
try
{
	byte[] tiraBytes = "HelloWord".getBytes("UTF-8");
	String strEncodeado = new String("UTF-8");
	byte[] tiraBytesDecodeado = strEncodeado.getBytes("UTF-8");
	System.out.println("1:::::::::::"+tiraBytes);
	System.out.println("2:::::::::::"+strEncodeado);
	System.out.println("3:::::::::::"+tiraBytesDecodeado);
}
catch (Exception e)
{
			
}
}
Y lo que me devuelve es:
1:::::::::::[B@14fe5c
2:::::::::::HelloWord
3:::::::::::[B@47858e

Teniendo que ser el 1 y el 3 igual en la representación de bytes...
¿Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 17/05/2007, 11:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Encode String // Decode byte[]

1) El codigo que muestras no da como resultado lo que pones, ya que strEncodeado es igual a "UTF-8".

2) 1 y 3 no han de ser iguales, puesto que estas pintando las referencias a dos arrays de bytes diferentes, no el contenido. Es decir, System.err.println(byte[]) no te pinta el contenido del array, te pinta la referencia ([B significa array de bytes y el numero de detras es un puntero a la posicion de memoria donde está, más o menos).

S!
  #3 (permalink)  
Antiguo 18/05/2007, 04:36
 
Fecha de Ingreso: marzo-2006
Mensajes: 2
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Encode String // Decode byte[]

Gracias por la respuesta. Seguro que tienes razón.
Para los que hayan tenido problemas parecidos a los míos les dejo aquí la solución que he encontrado y me funciona.

Código:
public static void main(String[] args) {
try
{
	byte[] tiraBytes = "HelloWord".getBytes("ISO8859-1");
	String strEncodeado = new String(tiraBytes ,"ISO8859-1");
	byte[] tiraBytesDecodeado = strEncodeado.getBytes("ISO8859-1");
}
catch (Exception e)
{
			
}
}
El problema era el encode//decode.
Para al que le interese, este problema era a raiz de firmar digitalmente documentos, mediante clave privada y su verificación mediante la clave pública. El problema era que estos métodos necesitan como parámetros byte[] pero al pasarlo por jsp y cosas así necesitas que sean String por lo tanto necesitaba el encode//decode del array de byte.

Muchas gracias y espero que le sirva de ayuda a más de uno.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:21.