我正在使用numpy' float32
向tofile()
写一个文件。
float_num = float32(3.4353)
float_num.tofile('float_test.bin')
可以使用numpy的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
或关闭。
答案 0 :(得分:4)
问题在于numpy的float32
存储为小端,而位串的默认实现是bigendian。解决方案是将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
对bitstring数据类型的引用,here。