例如,數字178應該轉換爲字母「M」。如何反轉Perl中無符號字節的位?
178是10110010.
倒車所有比特應給予01001101,它是77或 「M」 作爲字符。 我教過關於使用Reverse函數,但我不知道如何在@array上使用它。
use strict;
use warnings 'all';
open(my $fh1, '<', 'sym.dat') or die $!;
open(my $fh2, '<', 'sym2.txt') or die $!;
open my $fh_out, '>', 'symout.txt' or die $!;
until (eof $fh1 or eof $fh2) {
my @l1 = map hex, split '', <$fh1>;
my @l2 = map hex, split '', <$fh2>;
my $n = @l2 > @l1 ? @l2 : @l1;
my @sum = map {
no warnings 'uninitialized';
$l1[$_] + $l2[$_];
} 0 .. $n-1;
@sum = map { split //, sprintf '%08X', $_ } @sum;
print { $fh_out } "reverse @sum\n";
}
我在這裏計算十六進制值的總和,但問題是相同的我想扭轉字節值。
的代碼添加到您的問題 –
打印{$ fh_out }「reverse @sum \ n」; 「fh_out是從2個文件輸出十六進制和的輸出文件」 –
IMO您的問題有一個令人誤解的標題。你不是想顛倒位。反轉位通常被理解爲意味着翻轉它們的值,即一個變爲零,而零變成一個。 – antred