Converter byte[] para String para poder manda-lo via GET e depois recuperar o valor byte[]

Preciso trafegar um vetor byte[] por parametro de um método get e a única maneira que consegui imaginar foi converte-lo para uma string o problema foi que tanto a conversão direta byte[].toString e depois String.getBytes(), quanto pegar cada valor byte do vetor converter para Byte e converte-lo com .toString(), para depois recuperar o byte com Byte.valueof(String). byteValue não recuperam o valor do vetor byte[] original.

Algm sabe uma maneira de fazer essa operação?

Olá randall,

Utilize a classe Hex da commons codec: http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Hex.html

Existem dois métodos que você pode utilizar: encodeHex e decodeHex.

O que vai ser feito é converter cada byte para uma string representando o valor em hexadecimal.

Espero ter lhe ajudado,
Abraços

Strings não são um sinônimo de um array de bytes. Como existe encoding, é muito comum perder informações no processo.

Então, ou você converte os bytes para uma representação textual (como sugeriu o colega), ou não faz o que você quer. Outra opção é usar algum método que gere um arquivo em BASE-64.

O ASP.NET costuma guardar informações de sessão como um na sua página. Ele contém uma informação codificada em uma versão modificada de Base-64 (é que a Base-64 normal contém “/” e “+” e “=” que são caracteres que podem dar problemas se a informação for devolvida via GET.