我正在尝试编写Wireshark的自定义分析器,它将把字节/十六进制输出更改为ASCII字符串。我已经编写了分析器的主体部分并使其正常工作。我的唯一问题是将这些数据转换为ASCII字符串。Wireshark将此数据声明为字节序列。对于Lua,数据类型是userdata(使用type(data)进行测试)。如果我简单地使用tostring(data)将其转换为字符串,则我的分析器返回24:50:48,这是数组中字节的确切十六进制表示形式。有没有直接将这个字节序列转换为ascii的方法,或者您可以帮助我将这个冒号分隔的字符串转换为ascii字符串吗?我完全不了解Lua。我已经尝试过类似split(tostring(data),":")的东西,但是这将返回“ Lua Error:attempt to call global 'split' (a nil value)”。
使用Jakuje的答案,我能够创建如下内容:
使用Jakuje的答案,我能够创建如下内容:
function isempty(s)
return s == nil or s == ''
end
data = "24:50:48:49:4A"
s = ""
for i in string.gmatch(data, "[^:]*") do
if not isempty( i ) then
print(string.char(tonumber(i,16)))
s = s .. string.char(tonumber(i,16))
end
end
print( s )
我不确定这是否有效,但至少它起作用了;)