PHP - よく使う関数 - 文字列 - バイナリ文字列からデータ取得


クラウディア 


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

EaseUS
AbemaTV 無料体験