6

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

4

6 回答 6

5

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

Oracle中,当我跑步时HEXTORAW,我可以了解某个RAW领域中有什么,但我无法使用BASE64.

就像,当我看到很多0x3F's 时,我知道编码有问题。

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

于 2009-06-18T18:17:44.543 回答
3

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

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

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

在你的头脑中理解十六进制比基数 64 容易得多。

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

于 2009-06-18T18:22:08.813 回答
2

如果您想在 Windows 上将结果值用作文件名,则 Base64 不起作用,因为 base64 使用大写和小写字母。我敢肯定,由于类似的原因,它在其他时候不能使用。

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

于 2009-10-10T13:22:22.673 回答
1

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

但是比base64更难“阅读”。而且支持它的应用程序并不多,因此您必须编写自己的类/函数来进行编码和解码。

于 2009-11-23T02:22:31.667 回答
0

我想您的数据库确实将数据存储为二进制,但查询编辑器将使用十六进制编码显示它。这就是 SQL Server 查询分析器要做的事情。

于 2009-06-18T18:21:44.927 回答
0

我想这只是个人喜好问题......到目前为止,Hex 比 Base32 或 Base64 更容易阅读

于 2009-06-18T18:21:45.753 回答