PHPのpack()関数とは?データをバイナリ文字列に変換する方法と書式指定子一覧
PHPのpack()関数は、指定された書式(フォーマット)に従ってデータをバイナリ文字列にパックする関数です。バイナリファイルの生成やネットワークプロトコルの実装など、低レベルなデータ操作が必要な場面で活躍します。
構文
pack(format , args)
パラメータ
format − 使用する書式を指定します。指定できる主な値は以下の通りです。
a − NULで埋められた文字列
A − スペースで埋められた文字列
h − 16進数文字列(下位ニブルが先)
H − 16進数文字列(上位ニブルが先)
c − 符号付きchar
C − 符号なしchar
s − 符号付きshort(常に16ビット、マシンのバイト順)
S − 符号なしshort(常に16ビット、マシンのバイト順)
n − 符号なしshort(常に16ビット、ビッグエンディアン)
v − 符号なしshort(常に16ビット、リトルエンディアン)
i − 符号付き整数(サイズおよびバイト順はマシン依存)
I − 符号なし整数(サイズおよびバイト順はマシン依存)
l − 符号付きlong(常に32ビット、マシンのバイト順)
L − 符号なしlong(常に32ビット、マシンのバイト順)
N − 符号なしlong(常に32ビット、ビッグエンディアン)
V − 符号なしlong(常に32ビット、リトルエンディアン)
f − float(サイズおよび表現はマシン依存)
d − double(サイズおよび表現はマシン依存)
x − NULバイト
X − 1バイト巻き戻す
Z − NULで埋められた文字列
@ − 指定位置までNULで埋める
args − パック対象となる1つ以上の引数です。
戻り値
pack()関数は、データを含むバイナリ文字列を返します。
使用例
次の例では、書式「C3」を使って3つの符号なしchar(ASCIIコード)をバイナリ文字列に変換しています。ASCIIコードの80は「P」、72は「H」に対応します。
<?php
echo pack("C3",80,72,80);
?>
出力結果
上記のコードを実行すると、以下の出力が得られます。
PHP
-
PHPのunpack()関数の使い方を徹底解説!フォーマットコード一覧と実例付き
PHPのunpack()関数は、バイナリ文字列からデータを展開(アンパック)するための関数です。pack()関数でパックしたバイナリデータや、ファイルから読み込んだバイナリデータを解析する際によく使われます。構文unpack(format, data)パラメータformat − データの展開に使用するフォーマットを指定します。指定可能な値は以下の通りです。a − NUL埋めされた文字列A − スペース(空白)埋めされた文字列h − 16進数文字列(下位ニブルが先)H − 16進数文字列(上位ニブルが先)c − 符号付きchar(signed char)C − 符号なしchar(unsigned
-
PHPのpack()関数とは?データをバイナリ文字列に変換する方法と書式指定子一覧
PHPのpack()関数は、指定された書式(フォーマット)に従ってデータをバイナリ文字列にパックする関数です。バイナリファイルの生成やネットワークプロトコルの実装など、低レベルなデータ操作が必要な場面で活躍します。構文pack(format , args)パラメータformat − 使用する書式を指定します。指定できる主な値は以下の通りです。a − NULで埋められた文字列A − スペースで埋められた文字列h − 16進数文字列(下位ニブルが先)H − 16進数文字列(上位ニブルが先)c − 符号付きcharC − 符号なしchars − 符号付きshort(常に16ビット、マシンのバイト順)