在基于Lua的解剖器中,我想将tvb内容转换为其他tvb。代码:
local strbuf = buffer(offset, strlen * 2) -- range from tvb
offset = offset + strlen * 2
local inbytes = strbuf:bytes()
local outbytes = ByteArray.new()
outbytes:set_size(strlen) -- fails; using a number instead strlen fails to
失败消息为expected userdata, got number
。为什么set_size会期望userdata?或者,如何分配给定大小的ByteArray?
答案 0 :(得分:0)
以下作品,但不太优雅:
local s = ""
for i = 0, strlen-1 do
s = s .. "ff"
end
local outbytes = ByteArray.new(s)
答案 1 :(得分:0)
您似乎在其实施中发现了一个错误。根据他们自己的API,创建一个空的ByteArray与使用set_size不相容。
我找不到问题跟踪器,但您可以尝试将找到的错误发送到他们的邮件列表:https://www.wireshark.org/mailman/listinfo/wireshark-dev
作为一种解决方法,您是否尝试使用空字符串初始化ByteArray?
local outbytes = ByteArray.new("") -- notice the empty string here
outbytes:set_size(strlen)