截獲了16進(jìn)制的數(shù)據(jù)包,如何通過UDP協(xié)議發(fā)給制定設(shè)備呢,LUA中對16進(jìn)制支持還是不太友好。試過幾個函數(shù)不理想。沒有準(zhǔn)確的將數(shù)據(jù)發(fā)送出去。下面寫了一段測試代碼
str="1"
str1="\x01\x00\x43\xac"
--lua 16進(jìn)制可以用這樣的方法表示
a=string.char("0x01")..string.char("0x00")..string.char("0x43")..string.char("0xac")
--這里用string.char這個函數(shù)獲得16進(jìn)制整數(shù)對應(yīng)的數(shù)據(jù)。不是ascii嗎。 要獲得ascii要用到 string.byte這個函數(shù)。
if str1==a then ---比較兩個賦值語句的結(jié)果
print("same")
else print("no same")
end
print("str1 is:"..str1) --這里print函數(shù)無法打印出來特殊的16進(jìn)制數(shù)據(jù),除非是16進(jìn)制數(shù)據(jù)正好等于ascii碼的值。
print("a is:"..a) --同上
--print(string.format("%#x",str))
print(string.char(66)) -ascii轉(zhuǎn)字符
print(string.char("0x01")..string.char("0x01")..string.char("0xac"))
print(string.byte("0x01"))
print(string.char("0x00"))
print(string.char("1"))
print("this is 1 ascii:"..string.byte(1))
print("This is hex 0xac :"..string.char("0xac"))
print("This is hex 0xa :"..string.char("0xa"))
if string.char("0xa")==string.char("0x0a") ---這里默認(rèn)給單位數(shù)據(jù)前加了一個0
then print("OK")
else print("NO")
end