--[[
字符串转十六进制串
string.byte(s,n,m)用于返回字符串的整数形式,n,m表示字符串中的位置
]]--
function _M.str2hex(str)
{
local hex = ""
for i=0, string.len(str)-1, 1 do
local k = i+1
local b = string.byte(str, k, k)
hex = hex..string.format("%02x", b)
end
}
--[[
十六进制串反转为字符串
string.gsub(s, pattern, replace, [, n])用于作模式匹配和替换
%x:十六进制数字,%s:空白字符
%a:字母,%c:控制字符,%d:数字
%l:小写字母,%u:大写字母,%w:字母和数字
特殊字符如下:
(). % + - * ? [ ^ $
%也作为以上特殊字符的转义字符.
]]--
function _M.hex2str(hex)
local str, n = hex:gsub("(%x%x)[ ]?", function (w) return string.char(tonumber(w, 16)) end)
return str
end
--[[
字符串分割
]]--
function _M.str_split(str, sep)
local fields = {}
string.gsub(str, string.format("([^%s]+)", sep or "%s"), function(c) fields[#fields+1] = c end)
return fields
end
--[[
uri编码,RFC1738规定url只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其它文字和符号。
对于其它文字和符号需要经过url编码。
]]--
function _M.url_encode()
s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02x", string.byte(c)) end)
return string.gsub(s, " ", "+")
end
--[[
url解码
]]--
function _M.url_decode(s)
s = string.gsub(s, '%%(%x%x)', function(h) return string.char(tonumber(h, 16)) end)
return s
end
--[[
字符串异或求值
]]--
function _M.str_xor(s, k)
local ss = _M.hex2string(s)
local kk = _M.hex2string(k)
local res = ""
local key_len = string.len(kk)
for i=0, string.len(ss)-1, 1 do
local idx = i + 1
local idy = i%key_len + 1
local b = bit.bxor(string.byte(ss, idx, idx), string.byte(kk, idy, idy))
res = res..string.format("%02X", b)
end
return res
end
一些有意义的lua方法集
最新推荐文章于 2023-06-13 00:03:23 发布