Funzione Perl pack

Descrizione

Questa funzione valuta le espressioni in LIST e le impacchetta in una struttura binaria specificata da EXPR. Il formato viene specificato utilizzando i caratteri mostrati nella tabella seguente:

Ogni carattere può essere facoltativamente seguito da un numero, che specifica un conteggio di ripetizioni per il tipo di valore da impacchettare, ovvero stuzzichini, caratteri o persino bit, a seconda del formato. Un valore di * si ripete per tutti i valori rimasti in LIST. I valori possono essere decompressi con la funzione unpack.

Ad esempio, a5 indica che sono previste cinque lettere. b32 indica che sono previsti 32 bit. h8 indica che sono previsti 8 nybbles (o 4 byte). P10 indica che la struttura è lunga 10 byte.

Sintassi

Di seguito è riportata la semplice sintassi per questa funzione:

pack EXPR, LIST

Valore di ritorno

  • Questa funzione restituisce una versione compressa dei dati in LIST utilizzando TEMPLATE per determinare come è codificato.

Ecco la tabella che fornisce i valori da utilizzare in TEMPLATE.

Sr.No. Carattere e descrizione
1

a

Stringa di caratteri ASCII riempita con caratteri nulli

2

A

Stringa di caratteri ASCII riempita con spazi

3

b

Stringa di bit, prima il più basso

4

B

Stringa di bit, prima la più alta

5

c

Un carattere con segno (intervallo solitamente da -128 a 127)

6

C

Un carattere senza segno (solitamente 8 bit)

7

d

Un numero a virgola mobile a precisione doppia

8

f

Un numero a virgola mobile a precisione singola

9

h

Stringa esadecimale, prima la cifra più bassa

10

H

Stringa esadecimale, prima la cifra più alta

11

i

Un numero intero con segno

12

I

Un numero intero senza segno

13

l

Un intero lungo con segno

14

L

Un numero intero lungo senza segno

15

n

Un numero intero breve in ordine di rete

16

N

Un numero intero lungo in ordine di rete

17

p

Un puntatore a una stringa

18

s

Un numero intero breve con segno

19

S

Un numero intero breve senza segno

20

u

Converti in formato uuencode

21

v

Un numero intero corto in ordine VAX (little endian)

22

V

Un numero intero lungo in ordine VAX

23

x

Un byte nullo

24

X

Indica "torna indietro di un byte"

25

@

Riempi con valori nulli (ASCII 0)

Esempio

Di seguito è riportato il codice di esempio che mostra il suo utilizzo di base:

#!/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";

Quando viene eseguito il codice sopra, produce il seguente risultato:

bits are A
bits are 
bits are �T
Array 255
Array T
Array 30