Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Unpacking byte stream long/quad little/big endian fields

by Tux (Canon)
on Jan 22, 2021 at 07:44 UTC ( #11127259=note: print w/replies, xml ) Need Help??

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

Replies are listed 'Best First'.
Re^2: Unpacking byte stream long/quad little/big endian fields
by GrandFather (Saint) on Jan 22, 2021 at 08:26 UTC

    Ahh, I hadn't noticed < and > in the pack/unpack docs. It is there in my Perl 5.14 Pocket Reference, but somewhat buried over the page in the middle of a large paragraph. They seem not to be mentioned in the 5.10 version of the reference, but poking around with perldoc indicates the endien modifiers are new in 5.10. Maybe that's why I wasn't aware of them?

    Anyway, much cleaner, thank you.

    Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11127259]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2021-04-23 10:59 GMT
Find Nodes?
    Voting Booth?

    No recent polls found