我正在尝试将 512x512
uint16 2D
数组保存为二进制电影的二进制帧。格式需要大端,但我一直在写入小端数据(试图在 Matlab、java 中读取它,它仍然是小端)。我尝试如下所示更改字节顺序,但无济于事。我很抱歉这是一个愚蠢的问题。
sys.byteorder = 'big'
for frame in range (0,1)
fid.write(array)
fid.close()
sys.byteorder = 'little';
以下线程似乎是相关的,但如果我尝试使用 struct.pack 更改字节顺序,我会收到垃圾邮件。
最佳答案
您可以使用 <
强制更改 numpy 数组的字节顺序/>
dtype 说明符:
>>> import numpy as np
>>> a = np.arange(5, dtype=np.uint16)
>>> a.dtype.str
'<u2'
>>> b = a.astype('>u2')
>>> a.tostring()
b'\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00'
>>> b.tostring()
b'\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04'
关于numpy:在大端写入 uint16 的大型二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396332/