http://www.perlmonks.org?node_id=11127259


in reply to Unpacking byte stream long/quad little/big endian fields

#!/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

Enjoy, Have FUN! H.Merijn