一些有意义的lua方法集

--[[
字符串转十六进制串
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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值