Perl-pack

提供:Dev Guides
移動先:案内検索

Perlパック機能

説明

この関数は、LIST内の式を評価し、それらをEXPRで指定されたバイナリ構造にパックします。 形式は、以下の表に示す文字を使用して指定されます-

オプションで各文字の後に数字を続けることもできます。この数字は、パックされる値のタイプの繰り返しカウントを指定します。形式に応じて、ニブル、文字、またはビットです。 LISTに残っている値の数だけ、値*が繰り返されます。 値は、unpack関数を使用して展開できます。

たとえば、a5は5文字が予想されることを示します。 b32は、32ビットが予想されることを示します。 h8は、8ニブル(または4バイト)が予想されることを示します。 P10は、構造の長さが10バイトであることを示します。

構文

以下は、この関数の簡単な構文です-

pack EXPR, LIST

戻り値

*この関数は、TEMPLATEを使用してLIST内のデータのパックバージョンを返し、そのコーディング方法を決定します。

TEMPLATEで使用される値を示す表を次に示します。

Sr.No. Character & Description
1
  • a*

null文字が埋め込まれたASCII文字列

2

A

スペースが埋め込まれたASCII文字列

3

b

ビット列、最下位が最初

4

B

ビットの文字列、最上位が最初

5

c

符号付き文字(通常-128〜127の範囲)

6

C

符号なし文字(通常は8ビット)

7

d

倍精度浮動小数点数

8

f

単精度浮動小数点数

9

h

16進数の文字列、最低桁が最初

10

H

16進文字列、最上位が最初

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

「1バイト戻る」ことを示します

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