Как скопировать байтовый массив в namedtuple в Python - PullRequest
0 голосов
/ 19 сентября 2019

Я пишу небольшую программу на python, и я также новичок в python.

В одном из моих классов у меня есть следующий именованный член кортежа.

WLinkResponses = collections.namedtuple('WLinkResponse',
                                        ['stx', 'seq', 'senderID', 'receiverID', 'ins', 'dataSize', 'payLoad'])

типы данныхиз всех полей в названной выше переменной tuple являются byteArray с фиксированным числом размеров.

Теперь мне нужно скопировать другой байтовый массив с именем "wLinkMessage" в этот именованный кортеж.Но моя копия должна назначить правильное значение для каждого поля именованного кортежа.

Я могу сделать копию вручную, перебирая исходный байтовый массив и назначая значение именованным полям кортежа, так как я знаю размер каждого поля.Но для выполнения этой задачи требуется довольно много строк, как показано ниже.

self.WLinkResponses.stx = wLinkMessage[0:1]
        self.WLinkResponses.seq= wLinkMessage[2:3]
        self.WLinkResponses.senderID = wLinkMessage[4:7]
        self.WLinkResponses.ReceiverID = wLinkMessage[8:9]
        self.WLinkResponses.ins= wLinkMessage[10:12]
        self.WLinkResponses.dataSize = wLinkMessage[13:15]
        self.WLinkResponses.payLoad=wLinkMessage[16:len(wLinkMessage)]

, поэтому есть ли способ определить размер каждого поля в именованном кортеже, поэтому мы можем скопировать его напрямуюиз байтового массива в именованный кортеж.

...