截獲了16進(jìn)制的數(shù)據(jù)包目溉,如何通過(guò)UDP協(xié)議發(fā)給制定設(shè)備呢弱左,LUA中對(duì)16進(jìn)制支持還是不太友好。試過(guò)幾個(gè)函數(shù)不理想棘钞。沒(méi)有準(zhǔn)確的將數(shù)據(jù)發(fā)送出去缠借。下面寫了一段測(cè)試代碼
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這個(gè)函數(shù)獲得16進(jìn)制整數(shù)對(duì)應(yīng)的數(shù)據(jù)。不是ascii嗎宜猜。 要獲得ascii要用到 string.byte這個(gè)函數(shù)泼返。
if str1==a then ---比較兩個(gè)賦值語(yǔ)句的結(jié)果
print("same")
else print("no same")
end
print("str1 is:"..str1) --這里print函數(shù)無(wú)法打印出來(lái)特殊的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ù)前加了一個(gè)0
then print("OK")
else print("NO")
end