我将一些hex ascii用于perl,并希望使用它的打印功能将这些东西打印到文件中。但十六进制不打印为ascii,而是打印为普通字符串
echo "\x48\x32\x35\x45" "\x90\xc1\xe2\x7a" | perl -e' @string = split " ",<>; print ${string[0]},chr(0),"$string[1]";' > input.txt
然而,这在input.txt
中给出了以下内容\x48\x32\x35\x45^@\x90\xc1\xe2\x7a
它应该更像是
H25E^@<90><C1><E2>z
答案 0 :(得分:0)
你需要eval
s(以及额外的双引号)来使perl“解释”十六进制转义:
echo "\x48\x32\x35\x45 \x90\xc1\xe2\x7a" | perl -e '@string = split " ",<>; print eval "\"$string[0]\"",chr(0),eval "\"$string[1]\"";'