【PHP8.x】unpack関数の使い方

作成日: 更新日:

unpack関数は、バイナリ文字列からデータを抽出し、指定されたフォーマットに基づいて解釈する関数です。これは主に、ネットワークプロトコルで送受信されるバイナリデータや、バイナリファイルのコンテンツを読み込み、PHPの変数として扱える形式に変換する際に使用されます。

この関数は、最初の引数にデータの構造を定義する「フォーマット文字列」を受け取ります。このフォーマット文字列には、読み込むデータの型(例えば、符号なしバイト、符号付き整数、浮動小数点数など)とそのバイト数、さらにはバイトオーダー(エンディアン)を指定する文字の組み合わせを使用します。2番目の引数には、解釈の対象となるバイナリ文字列を渡します。オプションとして、3番目の引数で、バイナリ文字列のどの位置から解釈を開始するかをオフセットとして指定することも可能です。

unpack関数は、フォーマット文字列に従ってバイナリ文字列を解析し、抽出されたデータを連想配列として返します。配列のキーはフォーマット文字列内で指定した名前、またはデフォルトの数値キーとなります。unpack関数は、バイナリデータをパックするpack関数と対になる機能を提供し、バイナリデータのエンコードとデコードの両方を可能にします。システムエンジニアにとって、低レベルのデータ処理や外部システムとの連携において非常に重要な役割を果たす関数です。

基本的な使い方

構文(syntax)

<?php

$binaryString = "\x01\x00"; // 2バイトのバイナリデータ(例: 16ビットの数値 1)
$format = "s";              // フォーマット文字列(例: 符号付きショート整数)

$unpackedArray = unpack($format, $binaryString);

?>

引数(parameters)

string $format, string $string, int $offset = 0

  • string $format: バイナリ文字列 $string をどのように解釈するかを定義するフォーマット文字列
  • string $string: 展開するバイナリ文字列
  • int $offset = 0: $string のどの位置から展開を開始するかを指定するオフセット値

戻り値(return)

array|false

与えられたフォーマット文字列に基づいて、バイナリデータから値を展開した配列、または失敗した場合は false が返されます。

【PHP8.x】unpack関数の使い方 | いっしー@Webエンジニア