我有一个 Java 程序,它以空格分隔的十六进制格式吐出通过网络接收到的 16 个字节的原始数据包。由于我不想更改该代码,因此我将结果传送到 Perl 脚本,理论上,该脚本可以简单地unpack
将其STDIN
转换为可识别的变量。以下是我的 Perl 文件的行输入示例:
FF FF 09 7D 10 01 07 01 00 02 00 1D 00 00 00 00 00 06 00 07 00 |--garbage-----|c--|c--|int---|int---|int---|int---|int---|int---|int- --|
(c 代表 char/byte,int 代表 16 位整数变量)
我最初想用unpack
干净地将每个输入行分隔成我需要的变量。但是,由于字符串中的空格分隔,我不确定如何处理它(我可以使用'A'作为模板,但我还不如只使用拆分!)
有没有优雅的使用方式unpack()
?我不是 Perl 大师,但另一种方法是,正如我之前建议的那样,使用split
然后手动将每个十六进制转换为一个字节,然后使用位操作和掩码来获得我想要的。任何其他建议(如果unpack
不保存一天)?