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);
注:解包时如果要取出多个可以用"/"分割
?>