Discussão:Código Natural/Notação posicional
Exemplos da RFC 4648
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:
ASCII("a")=97; ASCII("b")=98 ASCII("f")=102; ASCII("o")=111 "fo" = 102*256 + 111 = 26112 + 111 = 26223
Em seguida, a cada sequência de bytes, converte-se o equivalente numérico como se fosse notação Base256:
f
256 = [102]10 =66
16fo
256 = [26223]10 =666F
16
ou, destacando a função de conversão, BASE16(fo
256) =666F
16- BASE16(
foo
256) =666F6F
16 - ...
Na RFC foi destacada a função de conversão, conforme reproduzido abaixo, da seção 10 da RFC 4648:
BASE16("") = "" ... BASE16("foo") = "666F6F" ... BASE64("") = "" BASE64("f") = "Zg==" BASE64("fo") = "Zm8=" BASE64("foo") = "Zm9v" BASE64("foobar") = "Zm9vYmFy"
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: 2563 = 644 = 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.