wireshark-dissector - Wireshark 自定义 LUA 解析器:格式显示
问题描述
假设我想要一个名为 ABC 的字段,它将是 2 个无符号字节:0 到 65535 但是,表示的实际值是 -5.0 到 60.0,位与实际值之间的线性转换。
我有一些定义消息及其元素的 XML:名称、位置、位值(最小值和最大值)、实际值(最小值和最大值)、它在数据库中的存储方式(XML 从数据库中输出)、转换类型。
我正在编写一些从 XML 到 LUA 格式的转换工具。我应该如何编写解析器,以便看到 -5 到 60 之间的值?
谢谢
解决方案
您需要确保它不是 uint16 而是浮动的。
local abc_field = ProtoField.uint16("yourproto.abc", "ABC Value")
至:
local abc_field = ProtoField.float("yourproto.abc", "ABC Value")
当您添加 ABC 字段时:
subtree:add(ABC, buf(0, 2))
进行计算:
subtree:add(ABC, buf(0, 2):bitfield(0, 16) * (65/65536) - 5)
推荐阅读
- mysql - 如何在 typeorm querybuilder 中编写特定的原始查询
- html - 如何将 Flask-WTForms 与联系表单的 HTML 模板连接起来?
- python - 如何在 docker-compose 中设置和调用“awslogs”?
- python - 优化一段代码,以生成具有给定长度的每个可能的单词
- reactjs - 如何在反应函数组件中使用jquery调用“.hidden.bs.dropdown”事件
- php - 使用 eloquent 关系显示“结果”而不是“id”时出现错误,以防该字段是可选的,并留空 - Laravel
- c++ - streambuf 如何将错误通知其所有者
- c - 指针不接收 arr 的值
- java - 不能在子类 JAVA 和一个子类中调用超类的方法
- r - 向干涉图中添加强度梯度