- 1. 概要
- 2. 使い方
- 4. 参考サイト
1. 概要
ここで、「unpack」という関数について話すのですが、公式ドキュメントでは、「その他の関数」に分類されています。
2. 使い方
unpack(string $format, string $string, int $offset = 0): array | false
「PHP」ドキュメント、ママ。
format に基づき、バイナリ文字列から配列に分解します。
分解した結果は連想配列に格納されます。 このようにするには、別のフォーマットコードを使用してそれらを スラッシュ / で区切る必要があります。 引数にリピータが含まれる場合の配列の要素名は、 指定した名前の後に順番に番号がついたものとなります。
Perl の関数に動きを近づけるために、以下の変更が行われています:
・"a" は最後の NULL バイトを維持します。
・"A" は最後の ASCII 空白文字 (スペース、タブ、改行、キャリッジリターン、 NULL バイト) をすべて取り除きます。
・NULL 埋め文字列用に "Z" が追加されました。 これは最後の NULL バイトを取り除きます。
「$string」に、パックされたバイナリ文字列を指定します。
「$offset」に、データ切り出しを開始するオフセットを指定します。
戻り値に、バイナリ文字列を切り出した要素を含む連想配列を返します。失敗した場合に「false」を返します。
注意。連想配列のキーは、数字で、1から(0でない)始まります。
「$format」には、書式を指定し、下記の意味を持ちます。
| コード | 説 明 | 備考 |
| a | NUL で埋めた文字列 | |
| A | 空白で埋めた文字列 | |
| h | 十六進文字列、下位ニブルが先 | |
| H | 十六進文字列、上位ニブルが先 | |
| 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 ビット、リトルエンディアンバイトオーダー) | |
| q | signed long long (常に 64 ビット、マシンのバイトオーダー) | |
| Q | unsigned long long (常に 64 ビット、マシンのバイトオーダー) | |
| J | unsigned long long (常に 64 ビット、ビッグエンディアンバイトオーダー) | |
| P | unsigned long long (常に 64 ビット、リトルエンディアンバイトオーダー) | |
| f | float (サイズおよび表現はマシン依存) | |
| g | float (サイズはマシン依存。 リトルエンディアンバイトオーダー) | |
| G | float (サイズはマシン依存。 ビッグエンディアンバイトオーダー) | |
| d | double (サイズおよび表現はマシン依存) | |
| e | double (サイズはマシン依存。 リトルエンディアンバイトオーダー) | |
| E | double (サイズはマシン依存。 ビッグエンディアンバイトオーダー) | |
| x | NUL バイト | |
| X | 1 バイト戻る | |
| Z | NUL終端(ASCIIZ) 文字列をNUL で埋める | |
| @ | 絶対位置まで NUL で埋める | |
4. 参考サイト
本ページは、下記のサイトおよび「ChatGPT」軍曹を参考にさせていただきました。
「PHP: unpack - Manual」
|
|