将 python 浮点数转换为字节

Nat*_*iel 4 python numpy binary-data

我想将 Python 浮点数转换为字节数组,将其编码为 32 位小端 IEEE 浮点数,以便将其写入二进制文件。

在 Python 3 中执行此操作的现代 Pythonic 方法是什么?对于整数我可以这样做,但是对于浮点数my_int.to_bytes(4,'little')没有方法。to_bytes

如果我可以一次性为 numpy 数组中的每个浮点执行此操作(使用 dtype numpy.float32),那就更好了。但请注意,我需要将其作为字节数组获取,而不仅仅是立即将数组写入文件。

有一些听起来类似的问题,但它们似乎主要是关于获取十六进制数字,而不是写入二进制文件。

use*_*ica 5

NumPy 数组附带了一个tobytes方法,可以为您提供原始数据字节的转储:

arr.tobytes()
Run Code Online (Sandbox Code Playgroud)

您可以指定一个order参数以对多维数组使用 C 顺序(行主要)或 F 顺序(列主要)。

由于您想将字节转储到文件,您可能也对tofile直接将字节转储到文件的方法感兴趣:

arr.tofile(your_file)
Run Code Online (Sandbox Code Playgroud)

tofile始终使用 C 阶。

如果需要更改字节序,可以使用该byteswap方法。(newbyteorder有更方便的签名,但不会改变底层字节,所以不会影响tobytes。)

import sys
if sys.byteorder=='big':
    arr = arr.byteswap()
data_bytes = arr.tobytes()
Run Code Online (Sandbox Code Playgroud)