Qual é o propósito de hex-codificação para dados binários?
-
06-07-2019 - |
Pergunta
Estou um pouco curioso para saber por que alguém iria querer usar hex codificação sobre base64. Parece-me que a base 64 é mais eficiente. Em particular, por que é que as bases de dados parecem usar sempre a codificação hexadecimal? Trata-se de uma questão histórica, ou estou faltando alguma coisa sobre a codificação de hex?
Solução
Você deve ser um verdadeiro geek para ler BASE64
fora da tela.
Em Oracle
, quando eu corro HEXTORAW
, posso ter uma idéia do que está em um campo RAW
, mas eu não podia com BASE64
.
Como, quando eu ver muitas 0x3F
de, eu sei de alguma coisa com a codificação.
E internamente, estes são apenas bytes binários, não há outra necessidade de codificá-los, mas para mostrar a uma pessoa do outro lado da tela.
Outras dicas
É um bom compromisso entre o uso eficiente do espaço e legibilidade. padrões de bits tornam-se muito aparente em hexadecimal, enquanto outras bases não são tão claras.
que é mais fácil de ler, 0x8080 ou 32896? Eu diria que o valor hexadecimal é.
Ele também tem a boa propriedade de cada dígito hexadecimal sendo igual a uma mordidela (portanto, cada par igual a um byte).
É muito mais fácil fazer o sentido de hex em sua cabeça do que a base 64.
Quanto ao banco de dados, bem ter em mente que há uma diferença entre a forma como os dados são exibidos e como ele é armazenado. É mais provável que simplesmente exibir os dados como hex.
Base64 não funciona se você quiser usar os valores resultantes como nomes de arquivos no Windows, porque base64 usa tanto maiúsculas e minúsculas. Estou certo de que há outros momentos em que não pode ser usado por razões semelhantes.
Concordo com outros respostas sobre a legibilidade -. Dígitos hexadecimais alinhar muito bem em bytes de 8 bits, enquanto base64 "dígitos" não, e um dígito pode conter partes de dois bytes
No caso de armazenamento string (com "potencialmente" XML codificação segura) o seu poderia ganhar ainda mais eficiência com ASCII 85, pois é um 5/4 inchaço em vez de 4/3 para base64.
Mas é ainda mais difícil de "ler", em seguida, base64. E não muitas aplicações apoiá-lo tantas vezes você tem que escrever suas classes próprias / funções para fazer a codificação e decodificação.
Eu imagino o seu banco de dados é realmente armazenar os dados como binário, mas o editor de consulta vai mostrá-lo usando a codificação hexadecimal. Isto é o que SQL Server Query Analyzer vai fazer.
Eu acho que é apenas uma questão de preferência pessoal ... Hex é de longe mais fácil para eu ler, em seguida, algo em Base32 ou Base64