Как создать бинарный файл в Perl? - PullRequest
2 голосов
/ 29 февраля 2012

od -x test показывает:

0000000 457f 464c 0102 0001

Теперь я хочу использовать Perl для создания такого файла.

open FH,'>','test_1';
#syswrite(FH,0x457f464c01020001); # not work
print FH 0x457f464c01020001;      # not work

Как создать двоичный файл в Perl?

Ответы [ 4 ]

7 голосов
/ 29 февраля 2012

Для создания бинарного файла используется

open (my $fh, '>:raw', $qfn)

Чтобы поместить

45 7f 46 4c 01 02 00 01

в этот файл, можно использовать любой из следующих параметров:

# Starting with a string of those bytes.
print $fh "\x45\x7f\x46\x4c\x01\x02\x00\x01";

# Starting with a hex representation of the file.
print $fh pack('H*', '457f464c01020001');

# Starting with the bytes.
print $fh map chr, 0x45, 0x7f, 0x46, 0x4c, 0x01, 0x02, 0x00, 0x01;

# Starting with the bytes.
print $fh pack('C*', 0x45, 0x7f, 0x46, 0x4c, 0x01, 0x02, 0x00, 0x01);
2 голосов
/ 29 февраля 2012
open(my $out, '>:raw', 'test_1.bin') or die "Unable to open: $!";
print $out pack('s<',255) ;
close($out);

также вы можете посмотреть функции Perl Pack здесь

1 голос
/ 29 февраля 2012
print FH pack 'H*', '457f464c01020001'
0 голосов
/ 29 февраля 2012

print FH "\x45\x7f\x46\x4c\x01\x02\x00\x01" это другой способ.См. Операторы кавычек и подобные им в perlop для получения дополнительной информации о escape-последовательностях, доступных в строках.\x работает так же, как и в C ... за исключением того, что Perl имеет расширенный синтаксис, выходящий за пределы \xff.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...