0

Perl のbinmodeを使用して、次のワンライナーと同じ機能を実現し、1 つのテキストの 16 進データを出力する方法を教えてもらえますか?

$ perl -nle 'print map {sprintf "%02X",ord} split //'

たとえば、「abcABC」と入力すると、出力は「616263414243」になります。

binmode を使用して同様のワンライナーを指定してください。

ありがとう。

4

3 に答える 3

0

プログラム内からそれを行う方法を尋ねていますか? デフォルトの入力モードは Linux と同じでbinmode、Windows の唯一の違いは、すべての CR LF が LF に変換されることです。

これで安心して書けます。

while (<>) {
    chomp;
    printf '%02X, $_ for split //;
    print "\n";
}

ただし、Windows 版の perl を使用して Windows ファイルを読み込んでいる場合、CR 文字は消えます。

于 2016-03-04T15:48:16.083 に答える
0

を使用するというあなたの主張は理解できませんbinmodeが、おそらくこれがあなたの言いたいことですか?

perl -le 'print map { sprintf q{%02X}, ord } split //, shift' abcABC

出力

616263414243
于 2016-03-04T15:56:01.983 に答える