Как мне преобразовать формат пакета 'Nc *' в Perl в struct.pack для Python? - PullRequest
5 голосов
/ 06 октября 2009

Я пытаюсь конвертировать скрипт Perl в python, и он использует довольно много разных пакетов. Мне удалось выяснить различия букв в «шаблонах» для каждого из них, но у меня возникла проблема с пониманием того, как обрабатывать объявление отсутствия длины в Perl.

пример:

pack('Nc*',$some_integer,$long_array_of_integers);

Я не вижу аналога этой функции "*" в struct.pack на Python. Любые идеи о том, как преобразовать это в Python?

Ответы [ 2 ]

7 голосов
/ 06 октября 2009

Как насчет этого?

struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array)
1 голос
/ 06 октября 2009

Пакет Perl использует символ '*', аналогичный регулярным выражениям, что означает подстановочный знак для того же. Здесь, конечно, это означает больше подписанных целых.

В Python вы просто просматриваете строку и объединяете фрагменты:

result = struct.pack('>L', some_integer)
for c in long_array_of_integers:
    result += struct.pack('b',c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...