Perl 解包函数


描述

该函数使用 TEMPLATE 中指定的格式解压二进制字符串 STRING。基本上反转 pack 的操作,根据提供的格式返回打包值的列表。

您还可以在任何格式字段前添加 %<number> 前缀,以指示您需要 STRING 值(而不是实际值)的 16 位校验和。

句法

以下是该函数的简单语法 -

unpack TEMPLATE, STRING

返回值

该函数返回解压值的列表。

下面的表格给出了 TEMPLATE 中使用的值。

先生。 特征及描述
1

A

用空字符填充的 ASCII 字符串

2

A

用空格填充的 ASCII 字符串

3

位串,最低的在前

4

位串,最高的在前

5

C

有符号字符(范围通常为 -128 到 127)

6

C

无符号字符(通常为 8 位)

7

d

双精度浮点数

8

F

单精度浮点数

9

H

十六进制字符串,最低数字在前

10

H

十六进制字符串,最高位在前

11

有符号整数

12

无符号整数

13

有符号长整型

14

L

无符号长整型

15

n

网络顺序的短整数

16

网络顺序的长整数

17 号

p

指向字符串的指针

18

s

有符号短整型

19

S

无符号短整型

20

转换为uuencode格式

21

v

VAX(小端)顺序的短整数

22

V

VAX 顺序的长整数

23

X

一个空字节

24

X

表示“返回一个字节”

25

@

用空值填充 (ASCII 0)

例子

以下是显示其基本用法的示例代码 -

#!/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, A and 47.
print "Array $array[0]\n";
print "Array $array[1]\n";
print "Array $array[2]\n";

执行上述代码时,会产生以下结果 -

bits are A
bits are 
bits are