Problema com Byte!

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.

Alguem sabe como devo fazer ?

[]s

byte[] b = “B@5d174f”.getBytes();

isso é o suficiente.

Daniel,

Eu já havia tentado isso:

byte[] valor = “[B@5d174f”.getBytes();

e tentei isso também:

byte[] valor = “[B@5d174f”.getBytes(null);

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”.

Acabei de realizar um teste:

[B@c1c7c4
[B@221f81

Alguem sabe o pq pode estar ocorrendo isso ?

[]s

Aqui imprime sempre a mesma coisa.

Daniel,

Coloquei um teste em um servlet para você ver:

Retirei o link…

Valeu

Coloca o código do Servlet aqui, pf!

Está ai:

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class Cript extends HttpServlet	{
	
	public void init()	{	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) 
	     throws ServletException, IOException	{

		byte[] chave = "[B@5d174f".getBytes();
		
		PrintWriter out = response.getWriter();
		out.println("Original: ");
		out.println("<BR>");
		out.println("[B@5d174f");
		out.println("<BR>");
		out.println("Criada Agora: ");
		out.println("<BR>");
		out.println(chave);
		out.println("<BR>");
		out.println("Comando Utilizado: ");
		out.println("<BR>");
		out.println("byte[] chave = \"[B@5d174f\".getBytes()");

	}
	
	public void destroy()	{	}

}

Estranho!

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 :slight_smile:

Não entendi cv , oq você quis dizer ?

Tenta isso:

byte[] foo = new byte[] { 65, 65, 65, 65, 65 }; System.out.println(foo);

O que o CV está tentando lhe dizer é o seguinte:

  • 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.

Agora sim thingol !

Entendi, valeu pela explcação !

[]s

thingol só mais uma coisa achei o “printHex” muito bom, me ajudou a resolver o “problema” que eu estava tendo !

Valeu !

[]s