パケット内のデータを 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}
私の質問は、ユーザーデータ型を操作できる整数に変換するにはどうすればよいですか?