12.17.1 Packer オブジェクト

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

get_buffer( )
現在のパック処理用バッファを文字列で返します。

reset( )
パック処理用バッファをリセットして、空文字にします。

一般的には、適切な pack_type() メソッドを使えば、 一般に用いられているほとんどの XDR データをパックすることができます。 各々のメソッドは一つの引数をとり、パックしたい値を与えます。 単純なデータ型をパックするメソッドとして、以下のメソッド: pack_uint()pack_int()pack_enum()pack_bool()pack_uhyper() そして pack_hyper() がサポートされています。

pack_float( value)
単精度 (single-precision) の浮動小数点数 value をパックします。

pack_double( value)
倍精度 (double-precision) の浮動小数点数 value をパックします。

以下のメソッドは文字列、バイト列、不透明データ (opaque data) のパック 処理をサポートします:

pack_fstring( n, s)
固定長の文字列、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)
一様な項目からなる list をパックします。このメソッドは サイズ不定、すなわち、全てのリスト内容を網羅するまでサイズが 分からないリストに対して有用です。リストのすべての項目に対し、 最初に符号無し整数 1 がパックされ、続いてリスト中の データがパックされます。pack_item は個々の項目をパック するために呼び出される関数です。リストの末端に到達すると、 符号無し整数 0 がパックされます。

例えば、整数のリストをパックするには、コードは以下のようになるはず です:

import xdrlib
p = xdrlib.Packer()
p.pack_list([1, 2, 3], p.pack_int)

pack_farray( n, array, pack_item)
一様な項目からなる固定長のリスト (array) をパックします。 n はリストの長さです。この値はデータバッファにパック されません が、len(array)n と 等しくない場合、例外 ValueError が送出されます。 上と同様に、pack_item は個々の要素をパック処理するための 関数です。

pack_array( list, pack_item)
一様の項目からなる可変長の list をパックします。 まず、リストの長さが符号無し整数でパックされ、つづいて各 要素が上の pack_farray() と同じやり方でパックされます。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。