pack
(PHP3 , PHP4)
pack ---&">nbsp; 包裹资料成为二进制字符串
语法 : 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( )有作用