У меня есть программа, которая проверяет условия некоторой переменной поля, какLua проверка misinterpreying состояние
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 значения и не проверяя Соответственно, если условия должным образом. Условие корректно выполняется для условия field == '2'.
Как я могу преодолеть этот случай? Как я могу заставить его работать для условий проверки «0» и «1»?
Благодарю вас заранее!
В случае, если вам интересно, почему я помечен wirehark, условие проверки проверяет поле в файле 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', он работает правильно.
Что такое вывод 'file: write (_G.type (ty), '\ t', tostring (ty)) 'в wirehark? –
Проверка работоспособности: вы подтвердили, что тип оценивается чем-то иным, чем 2? Возможно, ваш пакетный захват содержит только тип 2. – user46874