支持我有一些十六进制原始数据打印使用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\x20”应编码为64位。
下面的8B十六进制“\xff\x02\x10\x00\x00`\x00”应编码为64位;
下面的3字节十六进制应解码为3个字符。
……
如何在perl中实现解码?
(顺便说一句,我不明白为什么每个十六进制之间都有反斜杠,这是十六进制应该如何打印出来的吗?)
发布于 2010-12-05 08:14:51
表示单字节的s{\\x(..)}{chr hex $1}eg;
。或者只使用unpack("v", "\x00\x20");
(有关详细信息,请参阅解包功能)。
发布于 2010-12-05 08:15:20
对数据进行解码:
s/\\x(..)/chr hex $1/eg/;
unpack
解码组件。https://stackoverflow.com/questions/4356526
复制相似问题