【发布时间】:2019-11-12 07:14:26
【问题描述】:
我想将 Python 浮点数转换为字节数组,将其编码为 32 位 little-endian IEEE 浮点数,以便将其写入二进制文件。
在 Python 3 中现代 Pythonic 的实现方式是什么?对于整数,我可以使用my_int.to_bytes(4,'little'),但没有用于浮点数的to_bytes 方法。
如果我可以一次性为 numpy 数组中的每个浮点数执行此操作(使用 dtype numpy.float32),那就更好了。但请注意,我需要将其作为字节数组获取,而不是立即将数组写入文件。
有一些听起来相似的问题,但它们似乎主要是关于获取十六进制数字,而不是写入二进制文件。
【问题讨论】:
-
处理单个原生 Python 标量的正确工具通常不是处理 NumPy 数组的正确工具。如果你想要一个 NumPy 解决方案,我建议专门询问 NumPy 并将常规 Python 类型排除在外(并期望从不了解 NumPy 的人那里得到非 NumPy 的答案)。
-
@user2357112 我会很高兴得到一个非 numpy 的答案,因为我一次写一个浮点数。我提到 numpy 主要是因为 numpy 解决方案不会受到伤害(无论如何我都在导入它)并且将来可能有用。
-
您可能想尝试找到一种方法来避免一次写一个。那会很慢。
-
@user2357112 你是对的。幸运的是,numpy 解决方案使我能够做到这一点:)
标签: python numpy binary-data