2

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

perl test.pl | hexdump

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

4

1 回答 1

4

“原始十六进制”没有任何意义。你得到的是你想要转换为文本表示的一串字节。为此,您可以使用unpack。例如,

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

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

于 2012-07-08T05:58:54.950 回答