pack

pack -- データをバイナリ文字列にパックします

説明

string pack(string format, mixed [args]...);

指定された引数を format に基づいて バイナリ文字列にパックします。 データを含むバイナリ文字列を返します。

この関数の発想は、Perl からのものであり、 フォーマット指定用コードは、Perl と全く同様に動作します。 フォーマット文字列は、フォーマットコードの後にオプションの 反復指定用引数が続いている形式となっています。 反復指定用引数は、整数値または入力データの最後まで反復を指定する * のどちらかを指定することができます。 a, A, h, H の場合、反復数はそのデータ引数が取得する文字の数 を指定します。 反復数が @ の場合、次のデータを置く場所の絶対位置を表します。 その他の場合、反復数はデータ引数が使われる数を指定し、 結果のバイナリ文字列にパックされます。 現在、実装されているものを以下に示します。

例 1. フォーマット文字列のパック


 $binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66);
 

この結果のバイナリ文字列は、 6 バイト長であり、 バイト列 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 となります。

符号付及び符号無しの区別は関数 unpack にのみ影響を与え、 関数 pack は符号付及び符号無しのフォーマットコード に関して同じ結果を与えるということに注意して下さい。

PHP は内部的に値をマシン依存の大きさの符号付の値として保持する ことにも注意して下さい。 このように保持するには大きすぎる符号無しの値を与えた場合、 倍精度実数に変換する際にしばしば期待外れの結果となります。