Função Perl pack

Descrição

Esta função avalia as expressões em LIST e as empacota em uma estrutura binária especificada por EXPR. O formato é especificado usando os caracteres mostrados na Tabela abaixo -

Cada caractere pode ser seguido opcionalmente por um número, que especifica uma contagem de repetição para o tipo de valor que está sendo empacotado. Isso é nibbles, chars ou mesmo bits, de acordo com o formato. Um valor de * se repete para quantos valores permanecerem em LIST. Os valores podem ser descompactados com a função desempacotar.

Por exemplo, a5 indica que cinco letras são esperadas. b32 indica que 32 bits são esperados. h8 indica que 8 nybbles (ou 4 bytes) são esperados. P10 indica que a estrutura tem 10 bytes de comprimento.

Sintaxe

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

pack EXPR, LIST

Valor de retorno

  • Esta função retorna uma versão compactada dos dados em LIST usando TEMPLATE para determinar como eles são codificados.

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, T and 30.
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