Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Модуль struct и упаковка строки в байты (...)

Celtic Hammer Мудрец (12248), открыт 1 неделю назад
С генерацией строки формата худо-бедно справился (может и не совсем правильно, но сейчас суть не в этом), a дальше что? Как вставить строку в pack? В примерах каждый элемент вставяляется по отдельности, например pack(fmt,1, 2, 3, 4, 5...)
 import struct  

my_str = '1 20 Пакуем байты на Python 2024 6.5'
s = my_str.split(' ')
r = []
for i in s:
if i.isalpha():
for k in i:
r += k
r += 'c'
else:
r += [i]
for i in range(len(r)):
if not r[i].isalpha():
if not '.' in r[i]:
r[i] = 'i'
else:
r[i] = 'f'
else:
r[i] = 'c'
res = ''.join(r)
fmt = ''
n = 1
for i in range(len(res) - 1):
if res[i] == res[i + 1]:
n +=1
if res[i] != res[i + 1] or i == len(res) - 1:
fmt += str(n) + res[i]
n = 1
if res[-2] != res[-1]:
fmt += res[-1]
fmt = '=' + ''.join(list(filter(lambda x: not x == '1',fmt)))
print(fmt)
# '1 2 Пакуем байты на Python 2024 6.5'
# формат =2i23cif
# Не знаю нужно ли учитывать пробел перед "Пакуем", с ним будет 24с

packed_str = struct.pack(fmt, b'my_str') # Вот тут что? Как вставить строку?
print(packed_str)
Выдает
packed_str = struct.pack(fmt, b'my_str')
struct.error: pack expected 27 items for packing (got 1)
Внятных разъяснений не нашел...
0 ответов
Похожие вопросы