Função de desempacotar Perl

Descrição

Esta função descompacta a string binária STRING usando o formato especificado em TEMPLATE. Basicamente, reverte o funcionamento do pack, retornando a lista de valores empacotados de acordo com o formato fornecido.

Você também pode prefixar qualquer campo de formato com% <number> para indicar que deseja uma soma de verificação de 16 bits do valor de STRING, em vez do valor.

Sintaxe

A seguir está a sintaxe simples para esta função -

unpack TEMPLATE, STRING

Valor de retorno

Esta função retorna a lista de valores descompactados.

Aqui está a tabela que fornece os valores a serem usados ​​no TEMPLATE.

Sr. Não. Descrição do personagem
1

a

String de caracteres ASCII preenchida com caracteres nulos

2

A

String de caracteres ASCII preenchida com espaços

3

b

Sequência de bits, o mais baixo primeiro

4

B

Sequência de bits, o mais alto primeiro

5

c

Um caractere com sinal (geralmente varia de -128 a 127)

6

C

Um caractere sem sinal (geralmente 8 bits)

7

d

Um número de ponto flutuante de precisão dupla

8

f

Um número de ponto flutuante de precisão única

9

h

String hexadecimal, dígito mais baixo primeiro

10

H

String hexadecimal, dígito mais alto primeiro

11

i

Um inteiro assinado

12

I

Um inteiro sem sinal

13

l

Um inteiro longo assinado

14

L

Um inteiro longo sem sinal

15

n

Um número inteiro curto na ordem da rede

16

N

Um inteiro longo na ordem da rede

17

p

Um ponteiro para uma string

18

s

Um inteiro curto assinado

19

S

Um inteiro curto sem sinal

20

u

Converter para o formato uuencode

21

v

Um número inteiro curto na ordem VAX (little-endian)

22

V

Um número inteiro longo na ordem VAX

23

x

Um byte nulo

24

X

Indica "voltar um byte"

25

@

Preencher com nulos (ASCII 0)

Exemplo

A seguir está o código de exemplo que mostra seu 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";

Quando o código acima é executado, ele produz o seguinte resultado -

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