当前位置: 首页 > 文档资料 > Perl 入门教程 >

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