指定された引数を format に基づいて バイナリ文字列にパックします。データを含むバイナリ文字列を返します。
この関数のアイデアは、Perlからのものであり、フォーマット指定用?ü ャoPerlと全く同様に動作します。 フォーマット文字列は、フォーマットコードの後にオプションの 反復指定用引数が続いている形式となっています。 反復指定用引数は、整数値または入力データの最後まで反復を指定する * のどちらかを指定することができます。 a, A, h, H の場合、反復数はそのデータ引数が取得する文字の数 を指定します。 反復数が @ の場合、次のデータを置く場所の絶対位置を表します。 その他の場合、反復数はデータ引数が使われる数を指定し、 結果のバイナリ文字列にパックされます。 現在、実装されているものを以下に示します。
a NUL で埋めた文字列
A 空白で埋めた文字列
h 16進文字列, 下位バイトが先
H 16進文字列, 上位バイトが先
c signed char
C unsigned char
s signed short (常に 16 ビット、マシンバイトオーダー)
S unsigned short (常に 16 ビット、マシンバイトオーダー)
n unsigned short (常に 16 ビット、ビッ°インディアンバイトオーダー)
v unsigned short (常に 16 ビット、リトルインディアンオーダー)
i signed integer (サイズおよびバイトオーダーはマシンに依存)
I unsigned integer (サイズおよびバイトオーダーはマシンに依存)
l signed long (常に 32 ビット、マシンバイトオーダー)
L unsigned long (常に 32 ビット、マシンバイトオーダー)
N unsigned long (常に 32 ビット、ビッグインディアンバイトオーダー)
V unsigned long (常に 32 ビット、リトルインディアンバイトオーダー)
f float (サイズおよび表現はマシン依存)
d double (サイズおよび表現はマシン依存)
x NUL バイト
X 1バイト戻る
@ 絶対位置まで NUL で埋める
符号付及び符号無しの区別は関数 unpack()にのみ 影響を与え、関数pack()は符号付及び符号無しの フォーマットコードに関して同じ結果を与えるということに注意して下 さい。
PHP は内部的に値をマシン依存の大きさの符号付の integer値として保持することにも注意して下さい。 このように保持するには大きすぎる符号無しの値を与えた場合、 floatに変換する際にしばしば期待外れの結果となります。