首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl:如何将十六进制数据解码为整数,字符串?

perl:如何将十六进制数据解码为整数,字符串?
EN

Stack Overflow用户
提问于 2010-12-05 07:54:42
回答 2查看 2.6K关注 0票数 2

支持我有一些十六进制原始数据打印使用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中实现解码?

(顺便说一句,我不明白为什么每个十六进制之间都有反斜杠,这是十六进制应该如何打印出来的吗?)

EN

回答 2

Stack Overflow用户

发布于 2010-12-05 08:14:51

表示单字节的s{\\x(..)}{chr hex $1}eg;。或者只使用unpack("v", "\x00\x20"); (有关详细信息,请参阅解包功能)。

票数 1
EN

Stack Overflow用户

发布于 2010-12-05 08:15:20

对数据进行解码:

  • s/\\x(..)/chr hex $1/eg/;
  • Better仍然假设您可以控制生成输入的C代码,首先让它输出二进制数据,并避免这一步entirely.

  1. 使用unpack解码组件。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4356526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档