pack
优质
小牛编辑
127浏览
2023-12-01
描述 (Description)
此函数评估LIST中的表达式并将它们打包成EXPR指定的二进制结构。 使用下表中显示的字符指定格式 -
每个字符可以可选地后跟一个数字,该数字指定被打包的值类型的重复计数。根据格式,这是半字节,字符或甚至位。 LIST中保留的值重复为*。 可以使用解包功能解压缩值。
例如,a5表示预期有五个字母。 b32表示预期32位。 h8表示预期有8个nybbles(或4个字节)。 P10表示结构长度为10个字节。
语法 (Syntax)
以下是此函数的简单语法 -
pack EXPR, LIST
返回值 (Return Value)
此函数使用TEMPLATE返回LIST中数据的打包版本,以确定其编码方式。
下面是表格,它给出了在TEMPLATE中使用的值。
Sr.No. | 字符和描述 |
---|---|
1 | a 用空字符填充的ASCII字符串 |
2 | A 用空格填充的ASCII字符串 |
3 | b 位串,最低位 |
4 | B 位串,最高位 |
5 | c 签名字符(范围通常为-128到127) |
6 | C 无符号字符(通常为8位) |
7 | d 双精度浮点数 |
8 | f 单精度浮点数 |
9 | h 十六进制字符串,最低位数 |
10 | H 十六进制字符串,最高位数 |
11 | i 有符号整数 |
12 | I 无符号整数 |
13 | l 带符号的长整数 |
14 | L 无符号长整数 |
15 | n 网络顺序中的短整数 |
16 | N 网络顺序中的长整数 |
17 | p 指向字符串的指针 |
18 | s 带符号的短整数 |
19 | S 无符号短整数 |
20 | u 转换为uuencode格式 |
21 | v VAX(little-endian)顺序的短整数 |
22 | V VAX顺序的长整数 |
23 | x 空字节 |
24 | X 表示“返回一个字节” |
25 | @ 填充空值(ASCII 0) |
例子 (Example)
以下是显示其基本用法的示例代码 -
#!/usr/bin/perl -w
$bits = pack("c", 65);
# prints A, which is ASCII 65.
print "bits are $bits\n";
$bits = pack( "x" );
# $bits is now a null chracter.
print "bits are $bits\n";
$bits = pack( "sai", 255, "T", 30 );
# creates a seven charcter string on most computers'
print "bits are $bits\n";
@array = unpack( "sai", "$bits" );
#Array now contains three elements: 255, T and 30.
print "Array $array[0]\n";
print "Array $array[1]\n";
print "Array $array[2]\n";
执行上述代码时,会产生以下结果 -
bits are A
bits are
bits are T
Array 255
Array T
Array 30