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

有帮助吗?

解决方案

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

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

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

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

其他提示

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

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

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

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

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top