Первая проблема заключается в том, что вы без необходимости пытаетесь (последовательность) распаковать ваши аргументы.Формат Struct
ожидает bytes
и int
, а у вас (почти) они уже есть.
Вторая проблема заключается в том, что "<"
- это строка Unicode ,и pack
ожидает байты вместо этого.Сначала необходимо правильно кодировать строку.
packed_data = packer.pack(value1.encode('utf-8'), value2)
Конкретная кодировка, которую вы используете, не имеет значения, если вы используете ту же кодировку для распаковки данных.
Обратите внимание, что еслиу вас действительно есть символ Unicode, который не может быть закодирован одним байтом, ваш формат строки будет неправильным.Модуль struct
не обрабатывает строки переменной длины сам по себе, поэтому, вероятно, было бы проще просто кодировать int
сам по себе и объединить его с вашей закодированной строкой.
value =
packed_data = value1.encode('utf-8') + struct.pack("I", value2)