Perl unpack 函数



描述

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

您还可以使用 % 前缀任何格式字段,以指示您想要 STRING 值的 16 位校验和,而不是该值本身。

语法

以下是此函数的简单语法:

unpack TEMPLATE, STRING

返回值

此函数返回解包值的列表。

下表列出了可在 TEMPLATE 中使用的值。

序号 字符和描述
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(小端序)中的短整数

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 􀳦T-
Array 255
Array T
Array 30
perl_function_references.htm
广告