2009-10-06 3 views
5

나는 펄 스크립트를 파이썬으로 변환하려고하는데, 꽤 다른 여러 팩을 사용한다. 필자는 각각의 "템플릿"에서 레터링 차이점을 파악할 수 있었지만 Perl에서 길이 선언을 처리하는 방법을 이해하는 데 문제가 있습니다.Perl의 팩 'Nc *'형식을 Python의 struct.pack으로 변환하려면 어떻게해야합니까?

예 :

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

내가 파이썬에서, 다음 struct.pack이 "*"기능에 대한 아날로그 표시되지 않습니다. 이것을 파이썬으로 변환하는 방법에 대한 아이디어가 있습니까?

답변

7

?

struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array) 
+0

나는) (팩 내부 모두를 유지하는 방법의 아이디어를 좋아하지만, 얻을 "struct.error이 : 팩이 정확히 X 인수가 필요합니다"와 (웃기려는 의도 없음) 배열을 풀기로를 속일 수 없었다 . – ewall

+0

@ewall : 작은 오타가 있었고 코드가 수정되었습니다. – abbot

1

Perl의 팩은 정규 표현식과 비슷한 '*'문자를 사용합니다. 더 많은 경우 와일드 카드를 의미합니다. 물론 여기에는 더 많은 서명 된 int가 포함됩니다. 파이썬에서

, 당신이하려는 문자열을 통해 조각 CONCAT 단지 루프 :이 방법에 대해

result = struct.pack('>L', some_integer) 
for c in long_array_of_integers: 
    result += struct.pack('b',c) 
관련 문제