pack
trabaja de forma parecida a sprintf
.
Su primer argumento es una cadena, seguida de una lista de valores
a formatear y devuelve una cadena:
pack("CCC", 65, 66, 67, 68) # empaquetamos A B C Del inverso es el operador
unpack
unpack("CCC", "ABCD")La cadena de formato es una lista de especificadores que indican el tipo del dato que se va a empaquetar/desempaquetar. Cada especificador puede opcionalmente seguirse de un contador de repetición que indica el número de elementos a formatear. Si se pone un asterisco (
*
) se indica que la especificación
se aplica a todos los elementos restantes de la lista.
Formato | Descripción | |
A | Una cadena completada con blancos | |
a | Una cadena completada con ceros | |
B | Una cadena binaria en orden descendente | |
b | Una cadena binaria en orden ascendente | |
H | Una cadena hexadecimal, los nibble altos primero | |
h | Una cadena hexadecimal, los nibble bajos primero |
Ejemplo de uso del formato A
:
DB<1> $a = pack "A2A3", "Pea","rl" DB<2> p $a Perl DB<3> @b = unpack "A2A3", "Perl" DB<4> p "@b" Pe rlLa variable
@b
tiene ahora dos cadenas. Una es Pe
la otra es rl
.
Veamos un ejemplo con el formato B
:
p ord('A') 65 DB<22> $x = pack "B8", "01000001" DB<23> p $x A DB<24> @y = unpack "B8", "A" DB<25> p "@y" 01000001 DB<26> $x = pack "b8", "10000010" DB<27> p $x