Conversão de Base 64  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
bland
JavaEvangelist

Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline

Pessoal,

Estou com um probleminha, na verdade não seria um problema, e sim desconhecimento de como é feita a conversão um valor qualquer (um array de caracteres numéricos) para a base64Binary e o processo de volta.

Eu necessito passar para um objeto um array de byte, onde esse objeto atribui o valor passado a um XML, que possui o tipo definido como base64Binary.

Quando isso é feito, gera uma sequencia de letras e números, sendo as letras em minúsculas e maiúsculas. Só que quando eu faço o processo de volta (do XML para o objeto) ele me traz um valor sem sentido (esse valor é um array de byte).

Por exemplo, eu passo o array:

e ele me retorna:

A partir disso eu poderia deduzir que 56 = 8, 49 = 1 e 55 = 7.
Porém, quando eu coloquei:

Ele me retornou:

Ou seja, alguém sabe como eu posso trabalhar na conversão para a base64 e o retorno dela?
Obrigado a todos.

http://www.twitter.com/almeidafabiano

Fabiano Almeida.
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Base-64: cada 6 bits do dado original são transformados em 1 caracter codificado.

Ou seja, cada 3 bytes do dado original são transformados em 4 caracteres.

A conversão que você mostrou parece esquisita. É que quando convertemos os bytes 08 01 08 07 08 para Base-64, o valor resultante é
"CAEIBwg=", ou seja, os bytes 43 41 45 49 42 77 67 3D (tá bom, em decimal dá 67, 65, 70, 73 e assim por diante.

Os caracteres são: A até Z, a até z, 0 até 9, "+", "/" e o caracter "=" para preenchimento do final.

Para mais detalhes:
http://en.wikipedia.org/wiki/Base_64

[WWW]
bland
JavaEvangelist

Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline

thingol,

Mais uma vez você me ajudando. Muito obrigado.
Bem, eu esqueci de colocar. A codificação para a Base64 do array de byte { 8, 1, 8, 7, 8 } resulta em ODE4Nzg=, ou seja, não corresponde ao que você informou.
Conversando com amigos, eles me disseram que tem uma forma de saber utilizando o Encode e o Decode para fazer o processo de ida e de volta. Eu encontrei diversas classes para fazer isso, porem nunca as utilizei.
Alguém tem ciência de como funciona ou algum exemplo da utilização de alguma classe de codificação e decodificação?

Obrigado a todos.

http://www.twitter.com/almeidafabiano

Fabiano Almeida.
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Você está confundindo o byte 08 com o caracter ASCII '8', cujo código em hexadecimal é 38. De fato, se submetermos os bytes 38 31 38 37 38 à codificação Base-64, obteremos a string ODE4Nzg= tal como você falou.
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Você pode usar a biblioteca Jakarta Commons Codec - http://jakarta.apache.org/commons/codec/userguide.html -
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team