Я действительно не уверен, как сформулировать этот вопрос в заголовке. Я думаю, просто показ моего кода говорит сам за себя
import struct
thing1_to_pack = b'Hello World'
thing2_to_pack = 1982
thing3_to_pack = b'weeee123'
packed_thing = struct.pack('12si20s',
thing1_to_pack,
thing2_to_pack,
thing3_to_pack)
print(f'Packed thing is {packed_thing}\n')
unpacked_thing = struct.unpack('12si20s', packed_thing)
print(f'Unpacked thing is {unpacked_thing}\n')
listthing = []
for val in unpacked_thing:
try:
print(f'Adding {val.decode()} to the list\n')
listthing.append(val.decode())
except AttributeError as err:
print(f'Adding {val} to the list\n')
listthing.append(val)
print(f'Our final result is {listthing} !')
Я ожидаю, что конечный результат будет
['Hello World', 1982, 'weeee123']
Однако, в итоге я получаю
['Hello World\x00', 1982,
'weeee123\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00']
Я действительно не уверен, что делать, я знаю, как я могу избавиться от \ x00s, уменьшив 12si20s до чего-то вроде 11si8s, но проектЯ использую это для, будет иметь различные размеры, и мне нужно иметь возможность просто раздеть их ...
Кто-нибудь знает правильный способ сделать это?