PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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
  1. PHPのunpack()関数の使い方を徹底解説!フォーマットコード一覧と実例付き

    PHPのunpack()関数は、バイナリ文字列からデータを展開(アンパック)するための関数です。pack()関数でパックしたバイナリデータや、ファイルから読み込んだバイナリデータを解析する際によく使われます。構文unpack(format, data)パラメータformat − データの展開に使用するフォーマットを指定します。指定可能な値は以下の通りです。a − NUL埋めされた文字列A − スペース(空白)埋めされた文字列h − 16進数文字列(下位ニブルが先)H − 16進数文字列(上位ニブルが先)c − 符号付きchar(signed char)C − 符号なしchar(unsigned

  2. PHPのpack()関数とは?データをバイナリ文字列に変換する方法と書式指定子一覧

    PHPのpack()関数は、指定された書式(フォーマット)に従ってデータをバイナリ文字列にパックする関数です。バイナリファイルの生成やネットワークプロトコルの実装など、低レベルなデータ操作が必要な場面で活躍します。構文pack(format , args)パラメータformat − 使用する書式を指定します。指定できる主な値は以下の通りです。a − NULで埋められた文字列A − スペースで埋められた文字列h − 16進数文字列(下位ニブルが先)H − 16進数文字列(上位ニブルが先)c − 符号付きcharC − 符号なしchars − 符号付きshort(常に16ビット、マシンのバイト順)