将原始十六进制转换为perl中的可读十六进制

时间:2012-07-08 05:11:12

标签: perl serial-port hex

我写了一个小的perl应用程序来读取串口。当我运行我的小脚本时,我会收到数据,但它是用不可读的标志写的......它显示为* I ??。但是,如果我这样做

perl test.pl | hexdump

我得到了所需的数据。十六进制数据对我来说很有意义。有没有人知道如何在不使用hexdump的情况下使用perl获取此输出? 现在我使用print($ data)来打印我的数据。

1 个答案:

答案 0 :(得分:4)

“Raw hex”并不意味着什么;你得到的是你想要转换为文本表示的字符串。为此,您可以使用unpack。例如,

my $bytes = read_from_serial_port();
my $hex = unpack 'h*', $bytes;

如果您想要相反的字节序,请使用H代替h。 (我总是忘记哪个是哪个。)