PHP pack()関数

PHP Misc リファレンスマニュアル

例

データをバイナリ文字列にパックする:

<?php
echo pack("C3",80,72,80);
?>

例を実行 »

定義と使用法

pack() 関数はデータをバイナリ文字列にパックします。

これはネットワーク転送、ファイル処理、データ保存で非常に有用で、特にデータ形式とバイト順(エンディアン)を正確に制御する必要がある場合に役立ちます。


構文

string pack(string $format, mixed $arg1 [, mixed $arg2, ...])
  • $format:与えられた data, ... パラメータをどのようにパックするかを指定する文字列。arg1, arg2, ... パラメータをパックします。各文字はデータ型とサイズを表します。
  • $arg1, $arg2, ...:パックするデータ。整数、浮動小数点数、文字列などを指定できます。

pack() 関数はパックされたバイナリ文字列を返します。エラーが発生した場合は false を返します。


パラメータ 説明
format 必須。データをパックするときに使用する形式を指定します。

可能な値:

整数:

  • c: 符号付き文字(1 バイト)。
  • C: 符号なし文字(1 バイト)。
  • s: 符号付き短整数(2 バイト、ホストバイトオーダー)。
  • S: 符号なし短整数(2 バイト、ホストバイトオーダー)。
  • l: 符号付き長整数(4 バイト、ホストバイトオーダー)。
  • L: 符号なし長整数(4 バイト、ホストバイトオーダー)。
  • q: 符号付き long long 整数(8 バイト、ホストバイトオーダー)。
  • Q: 符号なし long long 整数(8 バイト、ホストバイトオーダー)。

浮動小数点数:

  • f: 単精度浮動小数点数(4 バイト、ホストバイトオーダー)。
  • d: 倍精度浮動小数点数(8 バイト、ホストバイトオーダー)。

文字列とその他の型:

  • x: NUL バイト(埋め込みバイト、パラメータなし)。
  • a: NUL 終端文字列(パラメータを文字列として扱う)。
  • A: スペースで埋められた文字列(パラメータを文字列として扱う)。
  • @: 指定された長さまで NUL バイトで埋めます。
args+ オプション。パックする 1 つ以上のパラメータを指定します。

技術詳細

戻り値: データを含むバイナリ文字列を返します。
PHP バージョン: 4+
変更ログ: PHP 5.5 で "Z" コードが追加されました。Perl 互換の "a" と同じ機能を持ちます。


その他の例

以下は pack() 関数を使用したいくつかの例です。

符号なし短整数と文字列をパックします:

例

$data = pack('S', 65535); // 符号なし短整数 65535 をパック
echo bin2hex($data); // 出力: ffff

符号付き長整数と文字列をパックします:

例

$data = pack('l', -2147483648); // 符号付き長整数 -2147483648 をパック
echo bin2hex($data); // 出力: 0000000080000000

浮動小数点数と文字列をパックします:

例

$data = pack('f', 3.14); // 浮動小数点数 3.14 をパック
echo bin2hex($data); // 出力: 4048f5c3

注意事項

  • pack()pack() 関数はデータをバイナリ形式に変換するための強力なツールですが、使用する形式の各文字の意味と使い方を理解している必要があります。
  • エンディアン(バイトオーダー)の問題:システムによって整数と浮動小数点数の表現が異なる場合があります。次を使用できます。pack()とunpack()関数を使用して、異なるシステム間でのデータの正しい転送と解析を保証できます。
  • また、次を使用できます。bin2hex()関数でバイナリデータを十六進文字列に変換して、出力やデバッグを行うことができます。
PHP Misc リファレンスマニュアル その他の拡張機能