PHP pack与unpack函数
pack() 格式字符串
符号 | 备注 |
---|---|
a | NULL填充字符串 |
A | SPACE填充字符串 |
h | 十六进制字符串, 底四位 |
H | 十六进制字符串, 高四位 |
c | 有符号字符 |
C | 无符号字符 |
s | 有符号短整型 (16位, 主机字节序) |
S | 无符号短整型 (16位, 主机字节序) |
n | 无符号短整型 (16位, big endian byte order) |
v | 无符号短整型 (16位, little endian byte order) |
i | 有符号整型 (machine dependent size and byte order) |
I | 无符号整型 (machine dependent size and byte order) |
l | 有符号长整型 (32位, machine byte order) |
L | 无符号长整型 (32位, machine byte order) |
N | 无符号长整型 (32位, big endian byte order) |
V | 无符号长整型 (32位, little endian byte order) |
f | 单晶实型 (machine dependent size and representation) |
d | 双晶实型 (machine dependent size and representation) |
x | NUL byte |
X | Back up one byte |
@ | NUL-fill to absolute position |
范例1
<?php echo pack("C3",80,72,80); 输出: PHP 注:按参数顺序打包成3个无符号字符 ?>范例2
<?php echo pack("C*",80,72,80,72,72,72,72,72); 输出:PHPHHHHH 注: *号代表匹配任意个 ?>
范例3
<?php $text = "呵呵呵呵呵"; $len = strlen($text); echo pack("a{$len}", $text); 注:把$len长个字符打包,这里的$len是字节长度 ?>
范例4
<?php $arr_unpack = unpack('Nlen/Ntype/Nsub/Ntotal/a*content', $buf); 注:解包时如果要取出多个可以用"/"分割 ?>