一尘不染

如何在Linux Shell中将十六进制转换为ASCII字符?

linux

可以说我有一个字符串5a

这是ASCII字母的十六进制表示Z

我需要知道一个Linux shell命令,该命令将接受一个十六进制字符串并输出该字符串表示的ASCII字符。

因此,如果我这样做:

echo 5a | command_im_looking_for

我会看到一封单独的信Z

Z

阅读 1090

收藏
2020-06-02

共1个答案

一尘不染

echo -n 5a | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie'

请注意,这不会跳过非十六进制字符。如果只需要十六进制(原始字符串中没有空格等):

echo 5a | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie'

此外,zshbashecho以下方面提供本机支持:

echo -e '\x5a'
2020-06-02