Приглашаем посетить
Фет (fet.lit-info.ru)

Распаковка строк бинарных данных в переменные языка perl

Распаковка строк бинарных данных в переменные языка perl

Для того чтобы скрипт получил доступ к бинарным данным, он должен распако­вать их, перейдя в свой скалярный формат. Скрипты Perl распаковывают дан­ные, используя функцию unpack , которая имеет следующий формат:

$result = unpack(Template, Expression);

Expression является обычной строковой переменной, которая содержит бинарные данные, прочитанные функцией sysread , но может быть также выражением, кото­рое необходимо интерпретировать как строку. Template представляет собой сим­вольную строку-шаблон, описывающую, как интерпретировать значения в операнде Expression . Следующий фрагмент программы иллюстрирует использование функ­ции unpack :

($ r , $ g , $ b ) = unpack (“ C 3”, $ color );                         # распакует в 3 символа

@ longwords = unpack (“ L *”, $ data );           #   распакует в список длинных             #   слов

@stuff = unpack(“S2L”, $bin);           # распакует в 2 shorts и long

Каждый символ шаблона может сопровождаться числом, указывающим, сколько раз использовать этот символ. Если вместо числа стоит звездочка (*), то опера­ция будет выполняться для всех остающихся данных в строке. Если число не по­ставлено, то она выполняется однократно. Скрипт может поместить любое число символов шаблона в строку Template . В таблице 12.4 перечисляются символы, вхо­дящие в строковый параметр Template вместе с описанием влияния каждого из них на выполнение функции unpack .

Символ шаблона             Описание

a                                   Строка ASCII без нулевого символа

А                                  Строка ASCII без нулевого символа

b                                   Битовая строка (младший бит идет первым)

В                                  Битовая строка (старший бит идет первым)

с                                  Однобайтовый символ со знаком

С                                 Однобайтовый символ без знака

d                                  Значение с плавающей запятой, двойной точности

f                                   Значение с плавающей запятой, одинарной точности шаблона h                              Строка шестнадцатиричных значений (младшие разряды идут     первыми)

Н                                 Строка шестнадцатиричных значений (старшие разряды идут первыми)

i                                    Целое со знаком

I                                  Целое без знака

l                                    Целое со знаком типа long

L                                 То же, только без знака

n                                   Короткое целое

N                                  Длинное целое

p                                  Указатель на строку

s                                  Короткое целое со знаком

S                                 Короткое целое без знака

u                                  Раскодировка строки

v                                  Короткое целое

V                                 Длинное целое

х                                  Пропустить вперед один байт

Х                                 Пропустить назад один байт

@                                Перейти на указанную позицию в строке

Табл. 12.4. Символы шаблона

Назад | Оглавление | Далее