У меня есть следующий тип байтов:
b = b'2787\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x03\x01\x00\x00\x00\x00\x00\x96\x08\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x0047\x00>2!\tMV\xa7\x00\x00\x00\x00'
Я должен преобразовать его в строку и получить 2787, как я должен вырезать значения \ x00, я только что попробовал с decode ("utf- 8 "), но выдает следующее сообщение об ошибке:
код 'utf-8' c не может декодировать байт 0x96 в позиции 33: недопустимый начальный байт
также rstrip ('\ x00 ) не работает.
Какой тип декодирования мне следует использовать?
Отсюда я получаю список строк:
data, addr = socket_udp.recvfrom(struct.calcsize("B13s9s61s"))
info = struct.unpack("B13s9s61s", data)
И b - последняя 61 строка. Содержимое строки:
class Udp_packet:
type = 0x00
id = ""
random_num = ""
data = ""
def __init__(self, values_list, convert=False):
self.type = values_list[0]
self.id = values_list[1]
self.random_num = values_list[2]
self.data = values_list[3].split("\0")[0]
Код работает правильно, используя python 2.7, я только что перешел на 3.7.5