我想将具有任意位数的无符号或有符号整数压缩成base64、base32或base16(十六进制)表示形式。输出最终将作为一个字符串使用,该字符串将用作文件名,但这应该是不重要的。我使用的是最新的python3。在
这是可行的,但远远不够紧凑:
>>> import base64, sys
>>> i: int = 2**62 - 3 # Can be signed or unsigned.
>>> b64: bytes = base64.b64encode(str(i).encode()) # Not a compact encoding.
>>> len(b64), sys.getsizeof(b64)
(28, 61)
有一个prior question,现在关闭了,它的答案严格地与低效表示有关。再次注意,我们不想在这个练习中使用任何字符串或不必要的长字节序列。因此,这个问题不是那个问题的重复。在
这个答案部分源于Erik A的不同评论,比如for this答案。整数首先被紧凑地转换成字节,然后字节被编码成变量base。在
如果将输出用作文件名,则使用编码^{} 或甚至
'b16'
初始化编码器是更安全的选择。在使用示例:
^{pr2}$相关问题 更多 >
编程相关推荐