Seguinte estou com um problema que pode parecer meio estranho mas vamos lá, eu tenho um valor de byte, que existe e é fixo (B@5d174f) e gostaria de colocar ele em uma variável byte do meu aplicativo até ai tudo bem, mas byte[] não funciona como String que se fosse o caso bastaria fazer:
String nova = “B@5d174f”;
Com byte, eu não posso fazer:
byte[] nova = “B@5d174f”;
ou byte nova[] = “B@5d174f”;
Como eu faço isso ?
Já tentei usar getBytes(), mas no caso ele trasnforma o valor como se fosse uma string em uma byte novamente.
Mas em ambos quando mando imprimir na tela o valor ele me retorna um valor diferente a cada vez que o aplicativo é rodado e nunca o valor correto “[B@5d174f”.
Voce esta fazendo byte[].toString() ao dar println, que NAO converte o array de bytes numa string, mas sim usa o toString() padraozao bobao da Object, que pra arrays costuma ser algo idiota do tipo “[B@54fd9” mesmo
Quando imprimimos algum array diretamente com “toString()”, ele sempre vai mostrar algo como “[<nome JNI da classe>@<hash do objeto>”. No caso de byte, o nome JNI é “B”; no caso de String, o nome JNI é “Ljava/lang/String”.
Três formas de imprimir o tal array:
Se você quer ver todos os elementos separadamente, tente System.out.println (java.util.Arrays.asList (variavel)). Por exemplo:
byte[] b = {1, 2, 3, 4, 10};
System.out.println (java.util.Arrays.asList(b));
Se você quer ver o byte array como uma String, então converta-o em uma String, usando new String(byte[], String). Cuidado: vai aparecer um monte de bytes que não podem ser convertidos, e que vão aparecer como “?”.
Você pode imprimir em hexa, em algum lugar deste forum postei uma função “printHex” que efetua um “dump hexadecimal” de um byte array.