gpt4 book ai didi

string - 在lua中将字符串转换为十六进制?

转载 作者:行者123 更新时间:2023-12-03 11:53:12 28 4
gpt4 key购买 nike

我打算通过套接字发送一个字节数组,但是我以前在c/c++中工作并且是lua的新手。
现在我有一个问题,这是我的问题。

我想发送一个bytearray.It应该包含mac_address,string_length,string。

有关详细信息:

mac_address:6个字节
字符串长度:1个字节
字符串:几个字节

(1)第一个问题
现在,我有一个mac_address字符串,例如“01:2f:c2:5e:b6:a3”,如何将其转换为6字节的十六进制数组?

(2)秒
如何定义一个无符号数字并将其存储到字节?例如,sting_length为33,我如何将其作为0x21存储到一个字节中?

(3)最后
如何将mac_address(6bits),string_length(1bit),data_string(例如100bytes)组合成一个字节数组,并成功地通过luasocket发送出去。

就这样。

谢谢!

最佳答案

您可以使用string.char来获取数字的符号表示形式,这将使您可以将数字打包成字节。这样的事情应该起作用:

local function packet(address, str)
return address:gsub("(%x+):?",function(s) return string.char(tonumber(s, 16)) end)
.. string.char(#str)
.. str
end

print(packet("10:2f:c2:5e:b6:a3", "abc") == "\16/\194^\182\163\3abc")
gsub接受地址中的每个组, tonumber(s, 16)将十六进制数字转换为十进制, string.char将其转换为字符(一个字节)。然后将其全部打包成一个可以发送的字符串。这是结果字符串的Lua表示形式: "\16/\194^\182\163\3abc"

关于string - 在lua中将字符串转换为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29419345/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com