【发布时间】:2011-01-11 22:19:57
【问题描述】:
我有一个 Java 程序,它以空格分隔的十六进制格式吐出通过网络接收到的 16 个字节的原始数据包。由于我不想更改该代码,因此我将结果传送到 Perl 脚本,理论上,该脚本可以简单地将 unpack 从 STDIN 转换为可识别的变量。以下是我的 Perl 文件的行输入示例:
(c 代表 char/byte,int 代表 16 位整型变量)
我最初想使用unpack 将每个输入行清晰地分隔为我需要的变量。但是,由于字符串中的空格分隔,我不确定如何处理它(我可以使用'A'作为模板,但我还不如只使用拆分!)
有没有优雅的方式使用unpack()?我不是 Perl 大师,但另一种方法是,正如我之前建议的那样,使用 split 然后手动将每个十六进制转换为一个字节,然后使用位操作和掩码得到我想要的。还有其他建议吗(如果 unpack 不能挽救这一天)?
【问题讨论】: