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