【发布时间】:2019-11-29 22:48:08
【问题描述】:
LUA 的新用户正在为 Wireshark 创建协议解析器。
参考Lua - Bitwise Logical Operations,
我需要 Lua 中的一个函数来根据转换后的十六进制值创建一个字符串:
local function HexToCircuitID(val)
-- input: 0x9D81
-- output: "630.1.01"
local e = ((val >> 4) & 0x3) + 1
local f = val & 0xF
local g = val >> 6
return string.format("%d.%d.%02d",e,f,g)
end
解释器在右移运算符的第一行遇到“'>' 附近的意外符号”问题。
另外,我不确定字符串格式函数是否会像在 C 中一样运行(Lua 的新手)。这个函数是创建一个ProtoField,显示为:
CircuitId: 630.1.01
该字段的实际值为 0x9D81。
【问题讨论】:
-
你检查lua版本了吗?您链接的那个问题的答案解释了 5.2 和更早的 lua 版本没有位运算符,只是一个库。
标签: lua bit-manipulation wireshark-dissector