Perl-pack
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 |
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