如何使用python将字节转换为float?

时间:2018-05-15 08:58:16

标签: python

我有一个用java编写的二进制文件。我想用python读取文件,并将每4个字节转换为浮点数。

前4个字节为 with tf.Session() as sess: col1 = tf.add_to_collection('init',a ) sess.run(tf.variables_initializer(col1)) uninitializer_vars = [] for var in tf.global_variables(): try : sess.run(var) except tf.errors.FailedPreconditionError: uninitializer_vars.append(var) print(uninitializer_vars) ,但我通过代码读取bce9 1165

b'\xbc\xe9\x11e'

它与众不同!

然后我将它转换为with open(filename, "rb+") as f: f.read(4) 。但是我得到了错误的浮动。 错误的浮点数为struct.unpack('f',data1)。但它确实4.30659236383095e+22 那怎么解码呢?

2 个答案:

答案 0 :(得分:2)

您的浮点数采用大端格式编码。要解码它,请struct.unpack '>f'格式字符串(>明确告诉它使用big-endian格式,而不是系统的本机字节顺序):

>>> struct.unpack('>f', b'\xbc\xe9\x11e')
(-0.028450677171349525,)

答案 1 :(得分:0)

f.read(4) is your issue here 

file.read最多读取大小字节并返回。Python Docs

您必须创建一个包装函数来读取确切的字节。

您可以从这里获得灵感:Check link