| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/04/2007 19:49:02
|
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. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/04/2007 19:59:39
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/04/2007 11:35:52
|
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. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/04/2007 14:02:23
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/04/2007 15:53:04
|
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 -
|
|
|
 |
|
|
|
|