考虑此值:
my $value = hex('0x12345678');
我希望自己的
hexdump
像这样(相同的位顺序):0000000 1234 5678
我使用了这种方法,但是它混合了我的价值:
open(my $out, '>:raw', 'foo') or die "Unable to open: $!";
print $out pack('l', $value); # Test in little endian
print $out pack('l>', $value); # Test in big endian
这是我得到的:
0000000 5678 1234 3412 7856
我如何才能按顺序获得钻头?
编辑
所以问题可能出在我的hexdump上,因为我得到了与建议答案相同的输出。
$ perl -e 'print pack $_, 0x12345678 for qw( l> N )' | hexdump
0000000 3412 7856 3412 7856
我用
hexdump -C
得到了正确的结果:$ perl -e 'print pack $_, 0x12345678 for qw( l> N )' | hexdump -C
00000000 12 34 56 78 12 34 56 78 |.4Vx.4Vx|
我在这里找到了解释:
hexdump confusion
最佳答案
'l>'
选项对我有用(请注意,虽然没有调用hex
)。另外,N
作为模板也可以使用:
perl -e 'print pack $_, 0x12345678 for qw( l> N )' | xxd
0000000: 1234 5678 1234 5678