我有 32 字节的二进制数据要编码。它将被放在一个 URL 中,因此 URL 安全的东西更可取。显然,选择的典型编码是十六进制。这将产生一个 64 个字符的字符串。
我花了很多时间查看各种编码,并想知道,在未能找到之后,是否有一些编码可以产生少于 64 个字符但没有填充的输出(只是为了 URL 清洁,我宁愿没有填充)。一个有效的选项是类似于 Base 64 的版本,它在解码回二进制时自动确定是否需要填充。
似乎 Base 64 应该能够确定没有“=”字符的正确填充量是多少,因为您可以在 base 64 字符串的末尾添加任意数量的“=”符号,并且它总是会解码成功(至少使用 Python 的base64.b64decode()
)。我可以手动剥离并重新添加填充到 base 64 编码字符串,但对于我的用例,这将是很多额外的字符串操作。