繁体   English   中英

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

[英]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 安全的 base64 来避免 / 字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM