2009-10-06 13 views
5

私はPerlスクリプトをPythonに変換しようとしていますが、それは非常に少数の異なるパックを使用しています。私はそれぞれの "テンプレート"の文字の違いを理解することができましたが、私はPerlの長さ宣言の不足をどのように処理するかを理解することに問題があります。Perlのパック 'Nc *'形式をPythonのstruct.packに変換するにはどうすればよいですか?

例:

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

私は、Pythonで、struct.packにこの "*" 機能のためのアナログが表示されません。これをPythonに変換する方法に関するアイデアはありますか?

答えて

7

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

I)は、(パック内のすべてを維持する方法のアイデアを好きですが、私は得る「struct.errorは:パックが正確にX引数が必要」と(しゃれが意図していない)の配列を開梱にそれをだますことができませんでした。 – ewall

+0

@ewall:小さなタイポがあり、コードが修正されました。 – abbot

1

Perlのパックでは、正規表現に似た '*'文字が使用されています。これは、より多くの場合はワイルドカードを意味します。ここではもちろん、より多くの署名付きintを意味します。 Pythonで

、あなたの思いの文字列を通って、作品連結ちょうどループ:これはどのように

result = struct.pack('>L', some_integer) 
for c in long_array_of_integers: 
    result += struct.pack('b',c) 
関連する問題