pack と unpack は、通常のプログラムでは実際に見るのは簡単ではありませんが、昔に PHP を使用して Excel を生成したことがあれば、それがわかるでしょう。最近、C を操作しようとしたときに、彼の Excel のヘッダーがパックされているので、もう一度確認する必要がありました。実は私に包頭を要求したのはCさんでした。 。 。実際、純粋な文字列も良いです。なぜパンを手に入れなければならないのですか?本当に混乱しています...
マニュアルには梱包と開梱の説明がありますが、すべて英語です。 。 。
最初は、PHP がバイナリ パッケージを組み立てる必要があることを知らなかったので、回り道をしました。そしてサーバー開発者に、C 言語を使用していくつかのメモリを開発するよう依頼しました。操作関数はプロトコルの規則に従ってバイナリ パッケージを返し、その後、これらのメソッドを PHP が使用できる拡張関数のセットにコンパイルしました。
本題に戻り、この記事ではpackメソッドとunpackメソッドの使い方を紹介します。 PHP の公式マニュアルには、特に書式設定パラメータの使用例が少なすぎて理解しやすくなっています。
抜粋のパラメータの中国語説明:
パック/アンパックテンプレート文字 文字の意味
a 空のスペースで満たされたバイト文字列
B ビット文字列。各バイトのビットの順序は降順です。
d A を参照してください。ネイティブ形式の倍精度浮動小数点数
H 上位 4 桁が最初の 16 進数文字列
i 符号付き整数値、ネイティブ形式
I 符号なし整数値、ネイティブ形式
l 符号付き長整数、常に 32 ビット
L 符号なし長整数、常に 32 ビット
n 16 ビット短整数、「ネットワーク」バイトオーダー (ビッグエンディアン)
N A 32 -bit short integer、「ネットワーク」バイトオーダー (ビッグエンディアン)
p NULL で終わる文字列へのポインタ
P 固定長へのポインタ 文字列へのポインタ
q 符号付きクワッド (64 ビット整数) 値
Q An unsigned quad (64 ビット整数) 値
s 符号付き short 整数値、常に 16 ビット
S unsigned short integer 値、常に 16 ビット、
バイトオーダーはマシンチップに関連します
u エンコードされていない文字列
U A Unicode 文字番号
v 「VAX」バイトオーダーの 16 ビット短整数 (リトルエンドファースト)
V 「VAX」バイトオーダーの 32 ビット短整数 (リトルエンディアン)
w BER 圧縮された整数
x A null byte (1 バイト前方は無視されます)
X バイトをバックアップします
Z A NULL で終了する (および NULL で埋められる) バイト文字列
@ 絶対位置を NULL バイトで埋めます string Pack ( string $format [,mixed $args [,mixed $...]] ) いくつかのルール:
1. 各文字の後に数字を続けることができます。count が * の場合、それは他のすべてを意味します。
2. $format で必要なパラメーターよりも少ないパラメーターを指定すると、pack はすべての欠落値が null であると想定します。 $format で必要な数よりも多くのパラメータを指定した場合、追加のパラメータは無視されます。
以下の例を使用すると理解しやすくなります:
PHPコード