2 402
edições
m (Peter moveu Discussão:Código natural/Notação posicional para Discussão:Código Natural/Notação posicional: nme próprio) |
|||
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 31: | Linha 31: | ||
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. | 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. | ||
== Algoritmos oficiais de conversão hexa == | |||
Provavelmente os mais eficientes e maduros sejam C e C++, para converter unsignedint to hexa: | |||
Conforme Utility library https://en.cppreference.com/w/cpp/utility/chars_format | |||
* generico diversas baeses, https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/charconv#L107 | |||
* __to_chars_16 https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/charconv#L176 | |||
* ... inversa (prefix 0x or 0X indicating hexadecimal base - applies only when the base is 16 or 0), https://en.cppreference.com/w/cpp/string/basic_string/stol | |||
Outras dicas sobre a conversão em C: | |||
* sprintf o mais popular, https://stackoverflow.com/a/9636892/287948 | |||
* algoritmos similares, https://stackoverflow.com/a/4966309/287948 |
edições