二进制数据的十六进制编码的目的是什么?

时间:2009-06-18 18:14:19

标签: database language-agnostic binary hex base64

我有点好奇为什么要在base64上使用十六进制编码。在我看来,base 64更有效率。特别是,为什么数据库似乎总是使用十六进制编码?这是一个历史问题,还是我错过了关于十六进制编码的内容?

6 个答案:

答案 0 :(得分:5)

你必须是一个真正的极客才能在屏幕上阅读BASE64

Oracle中,当我运行HEXTORAW时,我可以了解RAW字段中的内容,但我无法使用BASE64

就像,当我看到很多0x3F时,我知道有一些编码。

在内部,这些只是二进制字节,没有其他需要对它们进行编码,而是向屏幕另一侧的人显示。

答案 1 :(得分:3)

这是有效空间使用和可读性之间的良好折衷。位模式在十六进制中变得非常明显,而其他基础则不那么清楚。

哪个更容易阅读,0x8080或32896?我会说十六进制值是。

它还具有每个十六进制数字的良好属性等于半字节(因此每对等于一个字节)。

比你的64更容易理解头脑中的十六进制。

就数据库而言,请记住,数据的显示方式和存储方式之间存在差异。它很可能只是将数据显示为十六进制。

答案 2 :(得分:2)

如果要在Windows上将结果值用作文件名,则Base64不起作用,因为base64使用大写和小写字母。我确信还有其他时候出于类似的原因不能使用它。

同意其他有关可读性的答案 - 十六进制数字在8位字节上很好地对齐,而base64“数字”则没有,一位数字可以包含两个字节的部分。

答案 3 :(得分:1)

对于字符串存储(具有“潜在的”XML安全编码),使用ASCII 85可以获得更高的效率,因为它是5/4膨胀而不是4/3用于base64。

但是更难以“读取”然后是base64。并没有很多应用程序支持它,因此您必须编写自己的类/函数来进行编码和解码。

答案 4 :(得分:0)

我认为您的数据库实际上是将数据存储为二进制文件,但查询编辑器将使用十六进制编码显示它。这就是SQL Server查询分析器的功能。

答案 5 :(得分:0)

我想这只是个人偏好的问题......对于我来说,Hex更容易阅读Base32或Base64中的内容