Как я могу упаковать int как 32-битную последовательность в Perl? - PullRequest
5 голосов
/ 14 февраля 2010

Рассмотрим этот фрагмент:

use strict;
use warnings;

my $data = "1";
my $packed = pack("I",$data);
open(my $file,">","test.bin") || die "error $!\n";
binmode $file;
print $file $packed;

Дело в том, что, пытаясь прочитать его с другого языка, кажется, что это немного порядковый номер. Есть ли аргумент шаблона, который позволяет мне записать его как big endian? Я хотел бы избежать дополнительной работы при чтении.

Ответы [ 2 ]

4 голосов
/ 14 февраля 2010

Рассмотрите возможность использования шаблона "N" с пакетом:

http://perldoc.perl.org/functions/pack.html

3 голосов
/ 14 февраля 2010

Решение - шаблон N.

my $packed = pack "N", $data;

См. Документацию pack для получения списка всех параметров упаковки.

...