Fonction de décompression Perl

La description

Cette fonction décompresse la chaîne binaire STRING en utilisant le format spécifié dans TEMPLATE. Inverse fondamentalement l'opération de pack, renvoyant la liste des valeurs compressées en fonction du format fourni.

Vous pouvez également préfixer n'importe quel champ de format avec un% <number> pour indiquer que vous voulez une somme de contrôle 16 bits de la valeur de STRING, au lieu de la valeur.

Syntaxe

Voici la syntaxe simple de cette fonction -

unpack TEMPLATE, STRING

Valeur de retour

Cette fonction renvoie la liste des valeurs décompressées.

Voici le tableau qui donne les valeurs à utiliser dans TEMPLATE.

N ° Sr. Caractère et description
1

a

Chaîne de caractères ASCII remplie de caractères nuls

2

A

Chaîne de caractères ASCII remplie d'espaces

3

b

Chaîne de bits, la plus basse en premier

4

B

Chaîne de bits, la plus élevée en premier

5

c

Un caractère signé (généralement compris entre -128 et 127)

6

C

Un caractère non signé (généralement 8 bits)

sept

d

Un nombre à virgule flottante double précision

8

f

Un nombre à virgule flottante simple précision

9

h

Chaîne hexadécimale, le plus petit chiffre en premier

dix

H

Chaîne hexadécimale, le chiffre le plus élevé en premier

11

i

Un entier signé

12

I

Un entier non signé

13

l

Un entier long signé

14

L

Un entier long non signé

15

n

Un entier court dans l'ordre du réseau

16

N

Un long entier dans l'ordre du réseau

17

p

Un pointeur vers une chaîne

18

s

Un entier court signé

19

S

Un entier court non signé

20

u

Convertir au format uuencode

21

v

Un entier court dans l'ordre VAX (petit boutiste)

22

V

Un entier long dans l'ordre VAX

23

x

Un octet nul

24

X

Indique "reculer d'un octet"

25

@

Remplir avec des valeurs nulles (ASCII 0)

Exemple

Voici l'exemple de code montrant son utilisation de 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, A and 47.
print "Array $array[0]\n";
print "Array $array[1]\n";
print "Array $array[2]\n";

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

bits are A
bits are 
bits are T-
Array 255
Array T
Array 30