11.18.1 Packer オブジェクト

Packerインスタンスには以下のメソッドがあります。

get_buffer ()
現在の pack バッファを文字列として返します。

reset ()
packバッファを空っぽの文字列にリセットします。

一般に、適当なpack_type()メソッドを呼び出すことで、 ほとんどの共通XDRデータ型に圧縮できます。 それぞれのメソッドは圧縮する値を1つの引数としてとります。 pack_uint(), pack_int(), pack_enum(), pack_bool(), pack_uhyper(), と pack_hyper()のメソッドは 単純なデータ型を圧縮します。

pack_float (value)
単精度浮動小数点数valueを圧縮します。

pack_double (value)
倍精度浮動小数点数valueを圧縮します。

以下のメソッドは文字列、バイト、はっきりしないデータを圧縮するのに対応しています。

pack_fstring (n, s)
Packs a fixed length string, s. n is the length of the string but it is not packed into the data buffer. The string is padded with null bytes if necessary to guaranteed 4 byte alignment. 固定長の文字列sを圧縮します。 nは文字列の長さです。しかし、データバッファに圧縮していれません。 4バイトアライメントを保証するひつようがあれば文字列にnull文字を入れます。

pack_fopaque (n, data)
pack_fstring()と同様固定長のはっきりしないデータストリームを圧縮します。

pack_string (s)
可変長文字列sを圧縮します。文字列の長さは符号なし整数として最初に詰められ、つぎに、 文字列データはpack_fstring()で圧縮されます。

pack_opaque (data)
pack_string()同様、可変長のはっきりしないデータ文字列を圧縮します。

pack_bytes (bytes)
pack_string()同様、可変長のバイトストリームを圧縮します。

以下のメソッドは配列とリストの圧縮に対応しています。

pack_list (list, pack_item)
同種の項目からなるリスト(array)を圧縮します。 このメソッドは大きさが決められないリストに対して有用です。 つまり、リストが全て渡されるまで大きさは利用できません。 リストにあるそれぞれの項目に対して符号なし整数1がまずつめられ、 リストから取り出してデータ値を順に処理します。 pack_item は個々の項目を圧縮するのに呼び出す関数です。 リストの終わりに符号なし整数0が入れられます。

pack_farray (n, array, pack_item)
同種の項目からなる固定長のリスト(array)を圧縮します。 nはリストの長さです。 それがバッファに圧縮して入らない、つまり、 len(array)nと等しくないとき、 ValueError例外が発生します。 先述のpack_itemはそれぞれの要素を圧縮するのに使われる関数です。

pack_array (list, pack_item)
同種の項目からなる可変長リストlistを圧縮します。 まず、リストの長さは符号なし整数として詰め、次に、 それぞれの要素は上述のpack_farray() で圧縮されます。

guido@python.org