3

我正在float32用 numpy's 向一个文件写入一个tofile().

float_num = float32(3.4353)
float_num.tofile('float_test.bin')

它可以用 numpy's 读取fromfile(),但这不符合我的需要,我必须在bitstring模块的帮助下将它作为原始二进制文件读取。

所以我做了以下事情:

my_file = open('float_test.bin', 'rb')
raw_data = ConstBitStream(my_file)
float_num_ = raw_data.readlist('float:32')

print float_num
print float_num_

输出:

3.4353
-5.56134659129e+32

可能是什么原因?第二个输出也应该是3.4353或关闭。

4

1 回答 1

5

问题是numpy的float32存储为小端,而位串默认实现是大端。解决方案是将 little endian 指定为数据类型。

my_file = open('float_test.bin', 'rb')
raw_data = ConstBitStream(my_file)
float_num_ = raw_data.readlist('floatle:32')

print float_num
print float_num_

输出:

3.4353
3.43530011177

有关位串数据类型的参考,请点击此处

于 2013-06-04T14:38:04.127 回答