读取二进制模式解释换行符

时间:2014-06-16 13:13:18

标签: python struct pack unpack

我有一个二进制文件,我试图根据协议解析。在二进制数据中,有一个由{C}生成的值'\nW\xe1A',如下所示:

struct. pack( '< f',28.1675).

当我尝试使用'rb'打开文件并使用unpack来获取浮动时,读取(长度)似乎只得到没有'\nW'的部分,只有{{1 ,就像Python正在解释换行符'\xe1A',但用'\n'打开应该避免这种情况吗?

有没有解决方案?

1 个答案:

答案 0 :(得分:1)

您显示的代码应该没有任何问题。这是一个最小的例子:

import struct

s = struct.pack("<f", 28.1675)
open("/tmp/testi.dat", "wb").write(s)

s1 = open("/tmp/testi.dat", "rb").read()
print struct.unpack("<f", s1)[0]

这给出了28.1674995422,这非常接近。如果你同时使用&#34; rb&#34;和&#34; wb&#34;,在路上应该没有换行麻烦。