支持我有一些使用c代码打印的十六进制原始数据,格式如“%02X” 所以他们看起来像:
\x00\x20\x00\x10\xfd\x02\x10\x00\x00\x00\x00\x20\xff\x02\x10\x00\x00\x00\x00\x00
\x05\x00\x011\x00\x01\x00\n\x00\x0240
我想按照以下格式解码它们:
前两个字节十六进制“\ x00 \ x20”应解码为ushort:
以下两个B十六进制“\ x00 \ x10”应解码为ushort:
以下8B十六进制“\ xfd \ x02 \ x10 \ x00 \ x00 \ x00 \ x00 \ x20”应编码为64位。
以下8B十六进制“\ xff \ x02 \ x10 \ x00 \ x00 \ x00 \ x00` \ x00”应编码为64位;
以下3个字节十六进制应解码为3个字符
....
如何在perl中实现解码 (顺便说一句,我不明白为什么每个十六进制之间都有反斜杠,是不是应该如何打印出十六进制)?
答案 0 :(得分:1)
s{\\x(..)}{chr hex $1}eg;
。
或只是unpack("v", "\x00\x20");
(有关详细信息,请参阅解压缩功能)。
答案 1 :(得分:0)
s/\\x(..)/chr hex $1/eg/;
unpack
解码组件。