我正在尝试将数据包内的数据转换为 int,但它不起作用。我能够正确地将字段添加到子树中,但希望能够以整数形式访问数据以执行其他一些工作。
我希望能够将下面的变量 len 用作 int,但是当我尝试使用“tonumber”方法时,会返回“Nil”。我可以使用“tostring”将其转换为字符串,但使用 to number 方法无济于事。
我看到了一些使用以下代码转换为整数的示例:
local len = buf(0,4):uint32()
但是当我在我的机器上运行它时会产生以下错误:
Lua error: attempt to call method "uint32" (a nil value)
这是我拥有的代码,除了注释之外,它可以正确执行所有操作:
{rest of code}
-- myproto dissector function function
function (my_proto.dissector (buf, pkt, root)
-- create subtree for myproto
subtree = root:add(my_proto, buf(0))
-- add protocol fields to subtree
subtree:add(f_messageLength, buf(0,4))
-- This line does not work as it returns a nil value
local len = tonumber(buf(0,4))
-- This line produces a "bad argument #1 to 'set' (string expected, got nil) error"
-- add message len to info column
pkt.cols.info:set((tostring(len))))
end
end
{rest of code}
所以我的问题是如何将 userdata 类型转换为可以使用的整数?