我想爲Wireshark編寫自定義解析器,它將字節/十六進制輸出更改爲ASCII字符串。在lua中將字節序列轉換爲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的答案,我能創造這樣的事情:
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)
我不知道這是否是有效的,但至少它作品;)
我看到有人用同樣的方式分割,所以我也試過了。後來我發現,在Lua中沒有分裂:(我會盡力去找你的方式,首先我必須跳過string.gmatch。 –
它的空白條目,謝謝;) –
任何downvote的原因,勇敢的遊俠? – Jakuje