Perl pack 函式



描述

此函式評估 LIST 中的表示式,並將它們打包到由 EXPR 指定的二進位制結構中。格式使用下表中所示的字元指定:

每個字元之後可以可選地跟一個數字,該數字指定要打包的值型別的重複計數,即根據格式,可以是半位元組、字元甚至位。* 值將重複列表中剩餘的所有值。可以使用 unpack 函式解包值。

例如,a5 表示預期五個字母。b32 表示預期 32 位。h8 表示預期 8 個半位元組(或 4 個位元組)。P10 表示結構長度為 10 個位元組。

語法

以下是此函式的簡單語法:

pack EXPR, LIST

返回值

  • 此函式使用 TEMPLATE 返回 LIST 中資料的打包版本,以確定其編碼方式。

下表給出了在 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, 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
perl_function_references.htm
廣告