#!/pro/bin/perl use 5.18.3; use warnings; use Config; use Fcntl; printf "Perl $^V %s ivsize %d byteorder %d\n", @Config{qw( archname ivsize byteorder )}; # Generate a "binary file" with a string of bytes likely to show up is +sues in # decoding my $binary = "\x91\x34\x33\x90\x81\x32\x31\x80"; for ([ "BE32" => "I>I>" ], [ "LE32" => "I<I<" ], [ "BE64" => "Q>" ], [ "LE64" => "Q<" ], ) { my ($type, $format) = @$_; my $data = pack $format => 0, 0; open my $fh, "<", \$binary; read $fh, $data, length $data; my @x = unpack $format => $data; if (@x == 2) { printf "%s\: %08x%08x\n", $type, @x; } else { printf "%s\: %016x\n", $type, @x; } }
=>
BE32: 9134339081323180 LE32: 9033349180313281 BE64: 9134339081323180 LE64: 8031328190333491
In reply to Re: Unpacking byte stream long/quad little/big endian fields
by Tux
in thread Unpacking byte stream long/quad little/big endian fields
by GrandFather
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |