構造体を使用して文字列と数値をパックしたいと思います。 私はフォーマットが10バイトのために'10s 'であることを見たが、 しかし、私はいつも他の文字列の10分の1を書きたいと思う? と私はそれを言うことができません10.どのような形式で書く必要がありますか? この動的方法はありますか?アンパックの書き方を構造体のpython形式の文字列を動的に長さ
私は をGET-パケットのサイズがわからない場合だけで、それはint型int型と文字列..です :
packed=struct.pack('i10s',1,"abaBaabb");
おかげ
編集
id, data= struct.unpack_from('is' ,message,0)
は1つの文字 を取得しますが、私は書く場合:
id, data= struct.unpack_from('i500s' ,message,0)
私はそれが500バイトまでとなることを知っているので、 文字列が小さければエラーになります。
どうすればよいですか? 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ abcabcabcabcabcabcabcabcabcabcabcabc abcabcabcabcabcabcabcabcabcabcabcabc
:
または - どのように私は、次の0 \ 00 \ 00のリードを得ることができます\ 00 \ 0 ¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00 ¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00¥00 \ 00 \ 00 \ 00 \ 00 \ 00 \ 00
このような文字列がある場合は、
はあなたに感謝!後でアンパックから特定の価値を得ることができますか? myStr = 'afgf' packed = struct.pack( 'i%ss'%len(myStr)、1、myStr); print 'packed'、packed print struct.unpack( '%ss'%len(myStr)、packed)ので、別のファイルに解凍したものから '1'番号を取得します。 – ABC
ヘッダを追加メッセージサイズに基づいて文字列サイズを計算することができます。 –