python按字节读取文件_按字节读取二进制数据,如何使用python提取数据?

我有一个文件,内容如下:0: 10 51 03 37 7F 43 82 99 45 3F E7 35 3A A8 80 B9 .text ? etc # text

10: 3D 3F F4 49 F8 9A 7A 85 03 40 8A C8 46 DE 0A 1A . -@ =! ETC # text

30: .......................................................

40: ...........................................10 03

Repeat next instant

10 51 ................................................................

............................................ 10 03

这是一条消息,其中10和51表示特定消息的开始,而10 03表示消息的结束。10表示0字节位置,51表示1字节位置并继续。

我的目标是读取5-8字节的位置十六进制数据,并将其转换为浮点数,并将9-16位置字节转换为每次时间的双倍。

到目前为止,我的实现只读取了前31个十六进制数据。with open("RawData.log") as fin:

here`x_list = ["{:02x}".format(ord(c)) for c in fin.read()]

struct.unpack('!f', '43829945'.decode('hex'))[0]

#261.1974182128906 # Correct output

struct.unpack('!f', '3FE7353AA880B93D3F'.decode('hex'))[0] gives error "unpack requires a string argument of length 4"

如何读取整个文件,并在每次发现消息头时仅从十六进制数据中提取这两个字段(10和51)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值