文字列よりも可変長バイト配列を使用する方が便利な場合があります。バイト配列は、次の 3 つの点で文字列と異なっています。(1) 配列の長さ(バイトカウント) を符号なし整数として明示的に保持している。(2) バイトシーケンスが NULL コードで終了しない。(3) データの外部表現と内部表現が一致する。バイト配列の内部表現と外部表現との変換には、プリミティブ xdr_bytes() を使用します。
bool_t xdr_bytes(xdrs, bpp, lp, maxlength) XDR *xdrs; char **bpp; u_int *lp; u_int maxlength; |
このルーチンの第 1、第 2、第 4 引数はそれぞれ、xdr_string() の第 1、第 2、第 3 引数と同じです。シリアライズの場合は、lp をデレファレンスしてバイトシーケンスの長さを得ます。デシリアライズの場合は、*lp にバイトシーケンスの長さが設定されます。