Wireshark用のカスタムディセクタを作成しようとしていますが、これはバイト/ 16進数の出力をASCII文字列に変換します。luaのASCII文字列へのバイト列の変換
私はこの切開器のボディーを書くことができました。私の唯一の問題は、このデータをASCII文字列に変換することです。
Wiresharkはこのデータを一連のバイトとして宣言します。 データ型はuserdata
(type(data)
を使用してテスト済み)です。 tostring(data)
を使用して文字列に変換するだけであれば、私のディセクタは24:50:48
を返します。これは配列のバイトの正確な16進表現です。
このバイトシーケンスをasciiに直接変換する方法はありますか、このコロンで区切られた文字列をASCII文字列に変換する手助けはできますか?私はLuaに全く新しいです。私はsplit(tostring(data),":")
のようなものを試してみたが、これは私がこのような何かを作成することができましたJakujeの答えを使用してLua Error: attempt to call global 'split' (a nil value)
を返します。
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)
私はこれが効果的であるかどうかわからないのですが、しかし、少なくともそれを作品)
誰かが同じ方法でスプリットを使用しているのを見たので、私も試しました。後で私はルアに分割がないことも知った:(私はあなたの道を行くようにしようとしている最初に私はstring.gmatchの空のエントリをスキップする必要があります –
それは働いた、ありがとう;) –
downvote 、勇敢なレンジャー? – Jakuje