文字列よりも可変長バイト配列を使用する方が便利な場合があります。バイト配列は、次の 3 つの点で文字列と異なっています。
配列の長さ、バイト数、符号なし整数内のバイト数。
バイトシーケンスが NULL で終わらない。
バイトの外部表現と内部表現が同じ。
バイト配列の内部表現と外部表現との変換には、プリミティブ 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 にバイトシーケンスの長さが設定されます。