Función de desempaquetado de Perl
Descripción
Esta función descomprime la cadena binaria STRING usando el formato especificado en PLANTILLA. Básicamente invierte la operación del paquete, devolviendo la lista de valores empaquetados de acuerdo con el formato proporcionado.
También puede prefijar cualquier campo de formato con% <número> para indicar que desea una suma de comprobación de 16 bits del valor de STRING, en lugar del valor.
Sintaxis
A continuación se muestra la sintaxis simple para esta función:
unpack TEMPLATE, STRING
Valor devuelto
Esta función devuelve la lista de valores desempaquetados.
Aquí está la tabla que da los valores que se utilizarán en PLANTILLA.
No Señor. | Descripción del personaje |
---|---|
1 | a Cadena de caracteres ASCII rellenada con caracteres nulos |
2 | A Cadena de caracteres ASCII rellenada con espacios |
3 | b Cadena de bits, el más bajo primero |
4 | B Cadena de bits, el más alto primero |
5 | c Un carácter con signo (rango generalmente de -128 a 127) |
6 | C Un carácter sin signo (generalmente 8 bits) |
7 | d Un número de coma flotante de doble precisión |
8 | f Un número de punto flotante de precisión simple |
9 | h Cadena hexadecimal, el dígito más bajo primero |
10 | H Cadena hexadecimal, el dígito más alto primero |
11 | i Un entero con signo |
12 | I Un entero sin signo |
13 | l Un entero largo con signo |
14 | L Un entero largo sin signo |
15 | n Un número entero corto en orden de red |
dieciséis | N Un entero largo en orden de red |
17 | p Un puntero a una cuerda |
18 | s Un entero corto con signo |
19 | S Un entero corto sin signo |
20 | u Convertir a formato uuencode |
21 | v Un número entero corto en orden VAX (little-endian) |
22 | V Un entero largo en orden VAX |
23 | x Un byte nulo |
24 | X Indica "retroceder un byte" |
25 | @ Rellenar con nulos (ASCII 0) |
Ejemplo
A continuación se muestra el código de ejemplo que muestra su uso básico:
#!/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";
Cuando se ejecuta el código anterior, produce el siguiente resultado:
bits are A
bits are
bits are T-
Array 255
Array T
Array 30