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