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.
marciocamurati
Agora sim thingol !
Entendi, valeu pela explcação !
[]s
marciocamurati
thingol só mais uma coisa achei o “printHex” muito bom, me ajudou a resolver o “problema” que eu estava tendo !