LUA 16進(jìn)制數(shù)據(jù)轉(zhuǎn)換字符串學(xué)習(xí)

截獲了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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容