有人可以告诉我Perl中的 binmode 如何用来实现跟随单行的相同功能,以便打印出一个文本的十六进制数据?
$ perl -nle 'print map {sprintf "%02X",ord} split //'
例如,如果我输入" abcABC",则输出将为" 616263414243"。
请使用binmode提供类似的单行。
感谢。
答案 0 :(得分:0)
binmode
毫无用处。目前没有PerlIO层将所有输出字节转换为0A
到它们的ASCII十六进制表示。
答案 1 :(得分:0)
您是否在程序中询问如何执行此操作?默认输入模式与Linux上的binmode
相同,在Windows上,唯一的区别是每个CR LF都转换为LF。
所以你可以安全地写这个。
while (<>) {
chomp;
printf '%02X, $_ for split //;
print "\n";
}
条件是如果使用Windows版本的perl读取Windows文件,CR字符将消失
答案 2 :(得分:0)
我不明白你对使用binmode
的坚持,但也许这就是你的意思?
perl -le 'print map { sprintf q{%02X}, ord } split //, shift' abcABC
616263414243