pack
(PHP3 , PHP4)
pack --- 包裹資料成為二進制字串
語法 : string pack (string format [, mixed args ...])
說明 :
依照參數format來包裹給予的參數成為二進制字串,傳回二進制字串。
這個函式的構想是取自Perl,而且所有的格式碼(formatting code)都一樣,可是確缺少了有一些格式碼,像是Perl的 "u" 格式碼。格式化字串是由格式碼所構成,跟隨一個非必需的 repeater參數,repeater參數可以是個整數值或是 *。參數format為 a , A , h , H時,repeat 計算一個資料參數取多少字元。參數format為@時,它是個放置下一個資料的對位置。否則,repeat 計算指定消耗(consumed)多少資料參數,並且包裹成二進制字串。目前format的格式有 :
a -- NULL填塞字串
A -- SPACE填塞字串
h -- 十六進位字串,開始為低字元
H -- 十六進位字串,開始為高字元
c -- 符號字元
C -- 無符號字串
s -- 符號短的(永遠是16位元,機器位元組順序)
S -- 無符號短的(永遠是16位元,機器位元組順序)
n -- 無符號短的(永遠是16位元,大的位元組在字尾的順序)
v -- 無符號短的(永遠是16位元,小的位元組在字尾的順序)
i -- 符號整數(機器依靠大小和位元組順序)
I -- 無符號整數(機器依靠大小和位元組順序)
l -- 符號長整數(永遠是32位元,機器位元組順序)
L -- 無符號長整數(永遠是32位元,機器位元組順序)
N -- 無符號長整數(永遠是32位元,大的位元組在字尾的順序)
V -- 無符號長整數(永遠是32位元,小的位元組在字尾的順序)
f -- 浮點數(機器依靠大小和表示)
d -- 倍浮點數(機器依靠大小和表示)
x -- NULL位元組
X -- 退後一位元組
@ -- 填滿NULL到對位置
Example :
<?php
$binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66);
?>
二進制字串的結果將會是6個位元組長而且包含位元組順序0x12, 0x34, 0x78, 0x56, 0x41, 0x42
注意 : pack( )符號和無符號的區別只對unpack( )有作用