我写了一个小 perl 应用程序来读取串行端口。当我运行我的小脚本时,我收到了数据,但它是用不可读的符号写的。它显示为 *I??。但是,如果我这样做
perl test.pl | hexdump
我得到所需的数据。十六进制数据对我来说很有意义。有谁知道我如何在不使用 hexdump 的情况下使用 perl 获得此输出?现在我使用 print ($data) 来打印我的数据。
我写了一个小 perl 应用程序来读取串行端口。当我运行我的小脚本时,我收到了数据,但它是用不可读的符号写的。它显示为 *I??。但是,如果我这样做
perl test.pl | hexdump
我得到所需的数据。十六进制数据对我来说很有意义。有谁知道我如何在不使用 hexdump 的情况下使用 perl 获得此输出?现在我使用 print ($data) 来打印我的数据。
“原始十六进制”没有任何意义。你得到的是你想要转换为文本表示的一串字节。为此,您可以使用unpack。例如,
my $bytes = read_from_serial_port();
my $hex = unpack 'h*', $bytes;
如果您想要相反的字节序,请使用H
而不是。h
(我总是忘记哪个是哪个。)