my( $width, $height ) = unpack 'I2', substr $data, $offset, 8;
####
print "$width : $height";
327680 : 262144;
####
printf "%u : %u\n", unpack 'V2', substr $data, $offset, 8;
1280 : 1024
####
## Assume the first 8 bytes are a double in the 'other' endianess.
## And the next 4 a float.
my $data = ...;
my $doublePackedOtherEndian = substr $data, 0, 8;
my $floatPackedOtherEndian = substr $data, 9, 4;
## Now reverse the bytes
my $doublePackMyEndian = reverse $doublePackedOtherEndian;
my $floatPackedMyEndian = reverse my $floatPackedOtherEndian;
## And unpack
my $double = unpack 'd', $doublePackMyEndian;
my $float = unpack 'f', $floatPackedMyEndian;