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

标签 perl serial-port hex

我写了一个小的 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/

相关文章:

perl - 如何做哈希引用切片的总和?

python - Python脚本与Arduino之间的一次串口通信-多次读写

csv - 电子表格列的自动 MD5 和十六进制编码

php bin2hex 问题

perl 排序问题

windows - 您如何构建针对 Windows 的 perl 源代码?

perl - 在perl脚本中获取%AppData%的路径

Linux串口监听器和解释器?

c - 如果写入是通过终端而不是通过应用程序完成的,为什么 rts 信号不同?

c++ - 十六进制数的第三个字节是什么?范围 : reading an API