Perl-pack-和-unpack
介绍
Perl 的 pack 用于将数据结构根据预定义的 template (自己编写) 打包为字符串 (通常是二进制字符串), unpack 则是利用 template 定义的提取方式从字符串中提取数据结构.
pack
函数语法如:
1 |
|
TEMPLATE
也是一个字符串, 描述了如何打包LIST
是要打包的列表
示例:
1 |
|
一般情况下, 一个模板字符处理列表中的一个元素, 比如有 C
模板字符可以处理一个无符号字符, C2
则可以处理两个. (不同模板字符的工作方式似乎不同)
unpack
函数语法为:
1 |
|
TEMPLATE
是一个字符串, 描述了如何提取binary_string
是目标二进制字符串
示例:
1 |
|
模板字符列表
A
: ASCII 字符 (空格填充)a
: ascii 字符 (NULL 字符填充)H
: HEX, 十六进制字符串 (高位优先)h
: hex, 十六进制字符串 (低位优先)C
: 无符号字符 (8 位)S
: Short, 无符号短整数 (16 位)L
: Long, 无符号长整数 (32 位)N
: Network, 网络字节序 (大端) 的 32 位无符号长整n
: network, 网络字节序 (大端) 的 16 位无符号短整V
: 小端字节序的 32 位无符号长整数v
: 小端字节序的 16 位无符号短整数x
: 跳过一个字符
除了用数字指定模板字符匹配的长度外, 可以用 *
匹配所有.
Reference
主要查阅 perldoc perlpacktut
. (看到 290 行了)
Perl-pack-和-unpack
http://example.com/2024/05/21/Perl-pack-和-unpack/