Python ASCII шестнадцатеричное преобразование
У меня есть скрипт, написанный на python3, который читает данные с устройства, подключенного через USB.
Вывод с устройства гласит следующее.
(240.0 08.3 240.0 50.0 08.3 2000 2000 24.0 25.0 21.0 29.2 27.0 1 10 030 0 2 1 1 01 0 0 25.0 0 1ÖZ
Мне нужно проверить эти данные с помощью crc. Проверка crc состоит в том, что crc всех данных ожидает, что последние 2 байта должны совпадать с последними двумя байтами.
Пример: crc(data[0:-2]) == data[-2:]
У меня есть следующий код.
def validateResult(result):
firstPart = result[0:-2].encode('utf-8')
lastPart = result[-2:].encode('utf-8')
crc = crc16.crc16xmodem(firstPart).to_bytes(2, 'big')
print (result) # pints the input
print (binascii.hexlify(crc)) # prints b'd65a' -> d6 is not in ascii table. While its in extended ascii
print (binascii.hexlify(lastPart)) #prints b'c3965a'
if(crc == lastPart):
return True
print ("CRC failure")
return False
Код для чтения данных:
res += "".join([chr(i) for i in dev.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize, timeout) if i != 0x00])
Как я могу исправить этот метод, чтобы он правильно проверял CRC?