这实际上与代码高尔夫有关,但也适用于其他地方。 人们通常使用base64编码在源代码中存储大量二进制数据。
假设所有编程语言都乐于阅读Unicode源代码,我们可以可靠地设计baseN编码的最大N是多少?
这里的可靠性意味着能够对任何数据进行编码/解码,因此可以对输入字节的每个组合进行编码,然后进行解码。编码的表格不受此规则的约束。
主要目标是尽量减少字符数,无论字节数。
它是base2147483647(32位)吗?
另外,因为我知道它可能因浏览器而异,并且我们已经遇到了将codegolf的代码复制粘贴到编辑器的问题,因此复制粘贴功能也是一个因素。我知道有一个Unicode范围的字符没有显示。
注意: 我知道对于二进制数据,base64通常会扩展数据,但这里的字符数是主要因素。
答案 0 :(得分:3)
这实际上取决于您希望编码的可靠的方式。字符编码的设计需要权衡,一般来说,允许的字符越多,普遍接受的可能性就越小,即可靠性越低。 Base64对此无法免疫。 {2003}发布的RFC 3548提到区分大小写可能是一个问题,并且字符+
和/
在某些情况下可能会出现问题。它将Base32(无小写)和Base16(十六进制数字)描述为可能更安全的替代方案。
使用Unicode不会更好。添加许多字符会引入更多可能的失败点。根据您的要求的严格程度,您可能会有 N 的不同值。我将介绍从大型 N 到小型 N 的一些可能性,每次都添加一个要求。