2 435
edições
Linha 2: | Linha 2: | ||
== Exemplos da RFC 4648 == | == Exemplos da RFC 4648 == | ||
O escopo da RFC 4648 é a | O escopo da RFC 4648 é a expansão de bytes para o modo textual. Partimos do valor do byte, que '''equivale a uma notação base256''': | ||
<pre> | <pre> | ||
ASCII("a")=97; ASCII("b")=98 | ASCII("a")=97; ASCII("b")=98 | ||
Linha 8: | Linha 8: | ||
"fo" = 102*256 + 111 = 26112 + 111 = 26223 | "fo" = 102*256 + 111 = 26112 + 111 = 26223 | ||
</pre> | </pre> | ||
Em seguida, a cada sequência de bytes | Em seguida, a cada sequência de bytes, converte-se o equivalente numérico como se fosse notação Base256: | ||
* {{baseNh|f|256}} = [102]<sub>10</sub> = {{baseNh|66|16}} | * {{baseNh|f|256}} = [102]<sub>10</sub> = {{baseNh|66|16}} | ||
* {{baseNh|fo|256}} = [26223]<sub>10</sub> = {{baseNh|666F|16}}<br/> ou, destacando a função de conversão, BASE16({{baseNh|fo|256}}) = {{baseNh|666F|16}} | * {{baseNh|fo|256}} = [26223]<sub>10</sub> = {{baseNh|666F|16}}<br/> ou, destacando a função de conversão, BASE16({{baseNh|fo|256}}) = {{baseNh|666F|16}} | ||
Linha 26: | Linha 26: | ||
BASE64("foobar") = "Zm9vYmFy" | BASE64("foobar") = "Zm9vYmFy" | ||
</pre> | </pre> | ||
Como 16²=256 podemos dispensar a conversão de equivalente numérico, já que um dígito base 256 resulta sempre exatamente em 2 dígitos base 16. Para dispensar o equivalente numérico na conversão para base 64 é mais complicado, precisamos esperar por 3 dígitos base 256 para obter exatamente 4 dígitos base 64: 256<sup>3</sup> = 64<sup>4</sup> = 16777216. Portanto se o número de bytes a serem convertidos para a base 64 não for múltiplo de 3, será necessário o "padding", e o valor não preservará hierarquia. |
edições