Conversão de Base 64

4 respostas
B

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:

{8,1,8,7,8}

e ele me retorna:

{56,49,56,55,56}

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

{0,1,2,3,4,5,6,7,8,9}

Ele me retornou:

{0,1,2,3,4,5,6,7,8,9}

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

4 Respostas

T

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:

B

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.

T

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.

T

Você pode usar a biblioteca Jakarta Commons Codec - http://jakarta.apache.org/commons/codec/userguide.html -

Criado 26 de abril de 2007
Ultima resposta 27 de abr. de 2007
Respostas 4
Participantes 2