如何解压 "pairwise reversed" 订单 BA DC 中的字节?
How to unpack bytes in "pairwise reversed" order BA DC?
我有一个二进制字符串,其中字节按以下方式反转:该文件包含例如四个字节 0x18 0xb1 0x35 0x41
并且应该在我的 perl 字符串或数组中解释为 0xb1 0x18 0x41 0x35
。也就是每一对字节都颠倒过来。
如何使用 unpack
解压这种格式?
我也想知道这种packing/format是不是标准的,有名字吗?如果我使用了错误的术语,我深表歉意,我不习惯字节级操作。
这对我有用:
unpack( 'SS', $bytes );
所以你有 "\x18\xb1\x35\x41..."
并且你想要 "\xb1\x18\x41\x35..."
$s =~ s/(.)(.)//sg;
my $out = $in =~ s/(.)(.)//srg;
my $out = pack "n*", unpack "v*", $in;
my $out = pack "C*", unpack "(xCXXCx)*", $in;
... 或包含 0xb1, 0x18, 0x41, 0x35, ...
.
的数组
my @out = unpack "C*", $in =~ s/(.)(.)//srg;
my @out = unpack "C*", pack "n*", unpack "v*", $in;
my @out = map { $_ >> 8, $_ & 0xFF } unpack "v*", $in;
my @out = unpack "(xCXXCx)*", $in;
我有一个二进制字符串,其中字节按以下方式反转:该文件包含例如四个字节 0x18 0xb1 0x35 0x41
并且应该在我的 perl 字符串或数组中解释为 0xb1 0x18 0x41 0x35
。也就是每一对字节都颠倒过来。
如何使用 unpack
解压这种格式?
我也想知道这种packing/format是不是标准的,有名字吗?如果我使用了错误的术语,我深表歉意,我不习惯字节级操作。
这对我有用:
unpack( 'SS', $bytes );
所以你有 "\x18\xb1\x35\x41..."
并且你想要 "\xb1\x18\x41\x35..."
$s =~ s/(.)(.)//sg;
my $out = $in =~ s/(.)(.)//srg;
my $out = pack "n*", unpack "v*", $in;
my $out = pack "C*", unpack "(xCXXCx)*", $in;
... 或包含 0xb1, 0x18, 0x41, 0x35, ...
.
my @out = unpack "C*", $in =~ s/(.)(.)//srg;
my @out = unpack "C*", pack "n*", unpack "v*", $in;
my @out = map { $_ >> 8, $_ & 0xFF } unpack "v*", $in;
my @out = unpack "(xCXXCx)*", $in;