我有一个程序可以检查某些变量字段的条件,例如
if(tostring(field) == '0') then {do something}
if(tostring(field) == '1') then {do something}
if(tostring(field) == '2') then {do something}
但是,我认为 lua 将 '0' 和 '1' 解释为 TRUE/FALSE 值,而不是正确检查相应的 if 条件。对于字段 == '2' 条件,该条件正确执行。
我该如何克服这种情况?我怎样才能使它适用于检查条件“0”和“1”?
先感谢您!
如果您想知道为什么我标记了 wireshark,if 检查条件是检查 pcap 文件中的字段。
我的lua代码供参考如下:
#!/usr/bin/lua
do
local pkts = 0
local stat = {}
local file = io.open("luawrite","w")
local function init_listener()
local tap = Listener.new("wlan")
local src_addr = Field.new("wlan.sa")
local type = Field.new("wlan.fc.type")
local sub_type = Field.new("wlan.fc.subtype")
local frame_length = Field.new("frame.len")
local data_rate = Field.new("wlan.data_rate")
function tap.reset()
pkts = 0;
end
function tap.packet(pinfo, tvb)
local client = src_addr()
local stype = sub_type()
local ty = type()
local ts = tostring(pinfo.rel_ts)
local fl = frame_length()
rate = data_rate()
if(tostring(ty) == '0') then
file:write(tostring(ts), "\t", tostring(fl), "\t", tostring(rate), "\n")
end
end
end
init_listener()
end
我指的是最后一行的第 7 行。如果我给条件 tostring(ty) == '2',它工作正常。