如何将四个浮点数压缩成一个字符串?

How can I compress four floats into a string?

我想以最短的方式使用字符集 [a..z, A..Z, 0..9] 来表示四个浮点数,例如 123.545, 56.234, -4534.234, 544.64,这样我就可以对四个浮点数并将它们存储在文件名中。这样做最有效的方法是什么?

我看过 base64 编码,它实际上并没有压缩结果。我还查看了使用 ){ 等字符的多段线编码算法,但我不能使用它。

您可以使用 struct 模块将它们存储为二进制 32 位浮点数,并将结果编码为 base64。在 Python 2:

>>> import struct, base64
>>> base64.urlsafe_b64encode(struct.pack("ffff", 123.545,56.234,-4534.234,544.64))
'Chf3Qp7vYELfsY3F9igIRA=='

可以删除 == 填充并重新添加以进行解码,这样 base64 字符串的长度是 4 的倍数。您还需要使用 URL-safe base64 来避免 /字符.