我有点好奇,为什么要在base64上使用十六进制编码。在我看来,基地64更有效率。特别是,为什么数据库似乎总是使用十六进制编码?这是一个历史问题,还是我错过了十六进制编码的东西?二进制数据的十六进制编码的目的是什么?
回答
你必须是一个真正的极客,在屏幕上阅读BASE64
。
在Oracle
,当我运行HEXTORAW
,我能得到一个什么样的RAW
领域的一些想法,但我不能BASE64
。比如,当我看到很多0x3F
的时候,我知道有一些编码。
而在内部,这些只是二进制字节,没有其他需要对它们进行编码,而是显示给屏幕另一侧的人。
我想你的数据库是真的存储数据为二进制,但查询编辑器将显示它使用十六进制编码。这是SQL Server查询分析器将执行的操作。
我想这仅仅是个人喜好的问题......十六进制是迄今为止我更容易阅读,然后在Base32或Base64
东西它是有效的空间利用和可读性之间的良好折衷。位模式在十六进制中变得非常明显,而其他基地则不太清楚。
这是更容易阅读,0x8080或32896?我会说十六进制值是。
它也有每个十六进制数字相当于一个半字节(因此每对等于一个字节)的好的属性。
要容易得多,使进制的感觉在你的脑袋比基地64
至于数据库,以及牢记之间存在数据的显示,它是如何存储的差异。这很可能只是将数据显示为十六进制。
如果您想将结果值用作Windows上的文件名,Base64不起作用,因为base64同时使用大写和小写字母。我敢肯定还有其他时候,由于类似原因无法使用它。
同意其他有关可读性的答案 - 十六进制数字在8位字节上很好地对齐,而base64“数字”没有,并且一个数字可以包含两个字节的一部分。
有点像角落的情况,但不要使用base64完全一样。 – 2009-10-10 19:36:17
对于字符串存储(带有“潜在的”XML安全编码),使用ASCII 85可以获得更高的效率,因为它是5/4膨胀而不是base64的4/3。
但是,“读”base64甚至更难。并且很多应用程序经常支持它,所以您必须编写自己的类/函数来执行编码和解码。
- 1. 什么是十六进制?
- 2. 获得负数的二进制补码的十六进制
- 3. 为什么typeof十六进制数或二进制数Uint64,而十进制数的类型是Int64?
- 4. UCS2十六进制编码
- 5. O_APPEND的十六进制值是什么?
- 6. 十六进制,八进制,二进制到十进制(C++)
- 7. Python中十六进制数的二进制补码
- 8. Clojure等价于Python的编码('十六进制')和解码('十六进制')
- 9. 十六进制转换为二进制
- 10. Python二进制到多十六进制
- 11. 二进制到十六进制转换
- 12. 大十六进制到二进制
- 13. 十六进制到二进制转换
- 14. 将带符号的十进制转换为使用二进制补码编码的十六进制
- 15. 十六进制为二进制形式,需要说明什么?
- 16. 十进制/十六进制/二进制转换
- 17. 十六进制为二进制和十进制在matlab中
- 18. 为什么printf自动将%x%o%d转换为十六进制十六进制和十二进制
- 19. 表示二进制补码的十六进制值
- 20. 有符号整数到二进制补码十六进制
- 21. 将十进制转换为十六进制和十六进制
- 22. Python中的二进制到十六进制,低半字节的第一编码
- 23. 十六进制到十二进制转换(带sed的管道)
- 24. 如何转换OCaml中十六进制,十进制,十进制和二进制数之间的数字?
- 25. 如何十六进制或十进制转换为二进制目标C
- 26. 选择一个十六进制附近的十六进制数
- 27. 如何插入十六进制/二进制?成mysql数据库?
- 28. 将填充添加到十六进制的目的是什么?
- 29. 解码十六进制(?)数据包
- 30. 将十六进制转换为二进制和16位二进制补码
如果您需要通过ASCII发送某个地方,将其解码回二进制并使用,则只需将其转换为base64即可。 – 2009-07-06 08:08:03