Tengo curiosidad por saber por qué uno querría usar la codificación hexadecimal sobre base64. Me parece que la base 64 es más eficiente. En particular, ¿por qué las bases de datos parecen usar siempre codificación hexadecimal? ¿Es un problema histórico o me falta algo sobre la codificación hexadecimal?¿Cuál es el propósito de la codificación hexadecimal para datos binarios?
Respuesta
Debe ser un verdadero geek para leer BASE64
fuera de la pantalla.
En Oracle
, cuando corro HEXTORAW
, puedo tener una idea de lo que está en un campo RAW
, pero no pude con BASE64
.
Al igual que, cuando veo un montón de 0x3F
, sé que hay algo con la codificación.
E internamente, estos son sólo bytes binarios, no hay otra necesidad de codificarlos, sino de mostrarlos a una persona del otro lado de la pantalla.
Me imagino que su base de datos está realmente almacenando los datos como binarios, pero el editor de consultas lo mostrará usando codificación hexadecimal. Esto es lo que hará SQL Server Query Analyzer.
supongo que es sólo una cuestión de preferencia personal ... Hex es, con mucho, más fácil para mí leer a continuación, algo en Base32 o base 64
Es un buen compromiso entre el uso eficiente del espacio y facilidad de lectura. Los patrones de bits se hacen muy evidentes en hex, mientras que otras bases no son tan claras.
que es más fácil de leer, 0x8080 o 32896? Yo diría que el valor hexadecimal es.
También tiene la agradable propiedad de que cada dígito hexadecimal sea igual a un mordisco (por lo tanto, cada par equivale a un byte).
Es mucho más fácil de darle sentido a hexagonal en la cabeza que la base 64.
En cuanto a la base de datos, así que tener en cuenta que hay una diferencia entre cómo se muestran los datos y cómo se almacenan. Lo más probable es que simplemente muestre los datos como hexadecimales.
Base64 no funciona si desea utilizar los valores resultantes como nombres de archivo en Windows, porque base64 usa letras mayúsculas y minúsculas. Estoy seguro de que hay otros momentos en que no se puede usar por razones similares.
De acuerdo con otras respuestas con respecto a la legibilidad: los dígitos hexadecimales se alinean muy bien en bytes de 8 bits, mientras que los "dígitos" base64 no, y un dígito puede contener partes de dos bytes.
Un poco de un caso de esquina, pero una buena razón para no utilizar base64 de todos modos. –
En el caso de almacenamiento de cadenas (con codificación segura de XML "potencialmente") podría obtener aún más eficacia con ASCII 85 ya que es un 5/4 hinchado en lugar de 4/3 para base64.
Pero es aún más difícil "leer" que base64. Y no muchas aplicaciones lo admiten con tanta frecuencia que tiene que escribir sus propias clases/funciones para hacer la codificación y decodificación.
- 1. ¿Cuál es el verdadero propósito de la codificación Base64?
- 2. ¿Cuál es el propósito de 'var'?
- 3. ¿Cuál es el propósito de los conjuntos de datos?
- 4. Pivoteo de base de datos: ¿cuál es el propósito?
- 5. ¿Cómo convertir la representación hexadecimal de datos a datos binarios en PHP?
- 6. protocolos binarios de propósito general
- 7. ¿Cuál es la codificación predeterminada para System.IO.File.ReadAllText
- 8. ¿Cuál es el propósito de la tilde en esta situación?
- 9. ¿Cuál es el propósito de Anorm's Pk?
- 10. ¿Cuál es el propósito de layout.xml?
- 11. ¿Cuál es el propósito de requestWindowFeature()?
- 12. ¿Cuál es el propósito de IntentSender?
- 13. ¿Cuál es el propósito de Mage_Core_Block_Template_Facade
- 14. ¿Cuál es el propósito de Active Records?
- 15. ¿Cuál es el propósito de Membership.ValidateUser()
- 16. WPF: ¿Cuál es el propósito de App.xaml?
- 17. ¿cuál es el propósito de Thread.holdsLock (lock)?
- 18. ¿Cuál es el propósito de 'Class.forName ("MY_JDBC_DRIVER")'?
- 19. ¿Cuál es el propósito de Rake?
- 20. ¿cuál es el propósito de glClear (GL_DEPTH_BUFFER_BIT)
- 21. ¿Cuál es el propósito de `qt_noop`
- 22. ¿Cuál es el propósito de precompiledApp.config?
- 23. ¿Cuál es el propósito de config.assets.precompile?
- 24. ¿Cuál es el propósito de String.IsInterned?
- 25. ¿Cuál es el propósito de utilizar NSOrderedSame?
- 26. ¿Cuál es el propósito de git-mv?
- 27. ¿Cuál es el propósito de Ext.require
- 28. ¿Cuál es el propósito de 'n = n'?
- 29. ¿Cuál es el propósito de Function.const?
- 30. ¿Cuál es el propósito de :: en C#?
Solo necesitarías convertirlo a base64 si necesitas enviarlo a algún lugar sobre ASCII, para decodificarlo de nuevo en formato binario y usarlo. –