Распакуйте байты в строку со структурой - PullRequest
0 голосов
/ 02 июля 2019

Я распаковываю двоичный файл в именованный кортеж.Часть байтов должна быть свернута в строку.Как импортировать раздел моих двоичных данных в строку в именованном кортеже для следующих двоичных данных?

b '\ x07 \ x01 \ x03 \ x00, \ x02 \ x02 \ x00 \ x01 \ x00 \x00 \ x01 \ x01 \ x01 \ x01 \ x00 \ x00 \ x00 \ 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 '

Я пытался использовать 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 найдена"

...