例如是否可以压缩
002e3483bbdc11ddaae0754822a559f6 变成最多只需要 30 个字符的东西。
是的,您可以将其转换为 base-32 数字,因此最大的 32 个字符的十六进制数字,即 ffffffffffffffffffffffffffffffff 在 base-32 中相当于 800000000000000000000000000,只有 26 个字符,另请注意,在 base-32 中,您将以仅包含的字符串结尾这个字符:123456789ABCDEFGHIJKLMNOPQRSTUV
例如:002e3483bbdc11ddaae0754822a559f6 在 base-32 中是 5OQ87EUS27F0000000000000
将十六进制转换为二进制,然后使用 base64 或任何其他编码方案,请参阅Binary-to-text encoding (Wikipedia)。这具有不需要像建议的 base32 解决方案那样的 128 位算术的优点。
转换为 base64 并返回:
$ echo 002e3483bbdc11ddaae0754822a559f6 |xxd -r -ps |openssl base64 -e |tee >(openssl base64 -d |xxd -ps)
AC40g7vcEd2q4HVIIqVZ9g==
002e3483bbdc11ddaae0754822a559f6
剪切从 from 开始的行|tee
以仅获得编码的输出。在大多数编程语言中,您将拥有核心或外部库来执行十六进制到二进制转换和 base64 编码。
注意:转换为 base32 也是可能的,但 base32 二进制到文本编码需要 8 字节填充,因此您必须对其进行修剪,然后=
在解码时重新添加填充 ( )。