我有一個二進制字串,其中位元組按以下方式反轉:該檔案包含例如四個位元組0x18 0xb1 0x35 0x41,應解釋為0xb1 0x18 0x41 0x35我的 perl 字串或陣列。也就是說,每對位元組都被反轉。
我怎樣才能unpack解壓這種格式?
我也想知道這種包裝/格式是否是標準的,它有名字嗎?如果我使用了錯誤的術語,我深表歉意,我不習慣位元組級操作。
uj5u.com熱心網友回復:
所以你有"\x18\xb1\x35\x41..."而且你想要"\xb1\x18\x41\x35..."
$s =~ s/(.)(.)/$2$1/sg;
my $out = $in =~ s/(.)(.)/$2$1/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/(.)(.)/$2$1/srg;
my @out = unpack "C*", pack "n*", unpack "v*", $in;
my @out = map { $_ >> 8, $_ & 0xFF } unpack "v*", $in;
my @out = unpack "(xCXXCx)*", $in;
uj5u.com熱心網友回復:
這對我有用:
unpack( 'SS', $bytes );
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337142.html
