[JAVA] Problema getBytes() en Linux.

D10X

Buenas,

Tengo este cacho de codigo:

byte[] bsha1;
.
.
.
System.out.println("bsha1" + new String(bsha1));
System.out.println("bsha1.lenght: " + bsha1.length);

for(int i = 0;i<bsha1.length;i++){
shaC = shaC + Hex.encodeHexString(String.valueOf(new String(bsha1).charAt(i)).getBytes("ISO-8859-1" )).substring(1);
}

Es una idiotez, simplemente de un array de bytes "bsha1" obtengo su longitud, y luego lo recorro con un for convirtiendo cada carácter, por eso el "charAt(i)", en Hexadecimal.

Sin embargo, aunque el "bsha1.lenght" me dice que la longitud del byte[] es de 20. A la hora de hacer el charAt(i), llega un momento en que me dice que el indice no existe (IndexofArrayOutOfBounfException o algo así), siempre antes de llegar a 19 que seria el indice máximo que tomaría.

En Windows funciona perfectamente el fallo solo lo tengo en LINUX.

¿Alguien sabe la razón?

LOc0

Ahora no tengo tiempo de pruebas pero según veo:


public static String encodeHexString(byte[] data)

así que por qué no pruebas a convertir todo el array de bytes de golpe a un String en vez de ese for "oscuro".

String cadena = Hex.encodeHexString(bsha1);

Salu2 ;)

Buffoncete

sin llegar a probarlo, lo haces así por un motivo concreto (te obligan a complicarte la vida) ?

D10X

#2 , #3 Mitad cuestiones legales, y mitad petición del cliente.

Pero vamos, que he cambiado la forma de hacerlo y listo, no encuentro absolutamente nada de este problema por internet.

Hexadecimal toda la cadena, y luego substring del texto completo. No es exactamente lo mismo, pero creo que valdra.

Usuarios habituales

  • D10X
  • Buffoncete
  • LOc0