使用Struct将字节解压缩为字符串

时间:2019-07-02 19:19:50

标签: python string byte

我正在将二进制文件解压缩到一个命名的元组中。字节的一部分需要卷成字符串。如何将我的二进制数据的一部分导入到namedtuple中用于以下二进制数据的字符串中?

b'\ x07 \ x01 \ x03 \ x00,\ x02 \ x02 \ x00 \ x01 \ x00 \ x00 \ x01 \ x01 \ x01 \ x01 \ x00 \ x00 \ x00 \ x01 \ x01 \ x01SRU 21-11 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00'x

我尝试使用ord()到字节时填充字符串

import struct
from collections import namedtuple

with open("55613.rtu", "rb") as infile:
    Student = namedtuple('Student', "RtuVersion RtuInPod SlaveRtu RtuStatus PodNumber MeterType IsNonExistPod "
                                    "WellheadConfigWMvt1 WellheadConfigWMvt2 WellheadConfigWMvt3 "
                                    "DisplayMvtProcessDataTypeStatus1 DisplayMvtProcessDataTypeStatus2 "
                                    "DisplayMvtProcessDataTypeStatus3 "
                                    "AlarmEnableSet1 AlarmEnableSet2 AlarmEnableSet3 "
                                    "GetSaveEUTrendDataNoMatterWhat "
                                    "DoesRtuRequestTrendData ScanningNode Name")
    bytes = infile.read(52)
    x = struct.unpack('<BbbbhB????????????B%sp' % ord(bytes[20]), bytes)

到目前为止,我收到“ TypeError:ord()期望的长度为1的字符串,但找到了int”

0 个答案:

没有答案