Я разрабатываю программу на Python3 для обработки данных с радаров. В общем, радар отправляет данные (шестнадцатеричные числа) на порт моего компьютера, и я использую сокет для прослушивания этого порта. И используйте код ниже, чтобы получить 4 байта данных.
data = connection.recv(4)
print(data)
При тестировании моей программы радар отправляет 08 00 00 01
и печатает программу b'\x08\x00\x00\x01'
. Я понимаю, что '\ x' означает, что рядом с символами находится шестнадцатеричное число, но я хочу получить из него числа типа [08, 00, 00, 01]
или обычную строку. Пробовал самый очевидный способ:
strData = data.decode()
print(strData.split('\x'))
Ошибка при SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape
.
И ситуация ухудшается, если радар отправит 08 0D 00 00
, print(data)
напечатает b'\x08\r\x00\x00'
, что заставляет меня понять, что строковые операции не могут решить эту проблему.
Итак, как правильно преобразовывать байты, такие как b'\x08\x00\x00\x01'
, в числа, подобные 08 00 00 01
.
Строковое кодирование сводит меня с ума -.- Хотя я использую Python3, решения на Python2.7 тоже подойдут. Заранее спасибо.