タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

Pythonとpackに関するnihohiのブックマーク (2)

  • 梱包とPythonのStructモジュールを使用して可変長配列/文字列をアンパック -- IT専門質問の答え -- 彼山の知識

    struct モジュールは、固定長の構造をサポートしていません.可変長文字列の場合は、お使いのオプションは、以下のとおりです. 動的( str が bytes に渡す前に pack() に変換する必要があります)あなたのフォーマット文字列を構築する. s = bytes(s, 'utf-8') # Or other appropriate encoding struct.pack("I%ds" % (len(s),), len(s), s) struct スキップして、ちょうどあなたの pack() -ED出力に文字列を追加するには、通常の文字列のメソッドを使用します. struct.pack("I", len(s)) + s 開梱のために、あなただけの時のビットを解凍する必要があります. (i,), data = struct.unpack("I", data[:4]),

    nihohi
    nihohi 2015/04/10
    可変長文字列のpack/unpackの扱い
  • Python の struct モジュールでバイナリプロトコルを扱う

    世の中には (この文章を送り届けるのに使われている HTTP のように) テキストプロトコルが多いけど、たまにはバイナリプロトコルもある。 そんなバイナリプロトコルを Python でどう扱うかというと、標準ライブラリの struct モジュールを使う。 struct モジュールでは各種データを文字列データに相互変換して扱うことができる。 以下は 4 つの int 型の値を文字列データにパック・アンパックする例。 データをどのように変換するかはフォーマット文字列で指定する。 http://docs.python.jp/2/library/struct.html#struct-format-strings >>> import struct >>> struct.pack('!4i', 1, 2, 3, 4) '\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00

    Python の struct モジュールでバイナリプロトコルを扱う
  • 1