在lua中常用到的几个小函数
来源:互联网 发布:iphone7plus在线软件 编辑:程序博客网 时间:2024/05/01 06:50
local cjson = require("cjson")
local iconv = require("iconv")
local zhttp = require("resty.http")
--16进制转换为短类型
function hex2short(hex)
local len0 = string.byte(hex,1);local len1 = string.byte(hex,2);
local len2 = len0*256 + len1;
return len2;
end
--16进制转换为int类型
function hex2int(hex)local len0 = string.byte(hex,1);
local len1 = string.byte(hex,2);
local len2 = string.byte(hex,3);
local len3 = string.byte(hex,4);
local len4 = len0 + len1*256 + len2*256*256 + len3*256*256*256;
return len4;
end
function hex2short_r(hex)
local len0 = string.byte(hex,1);
local len1 = string.byte(hex,2);
local len2 = len1*256 + len0;
return len2;
end
function hex2int_r(hex)
local len0 = string.byte(hex,1);
local len1 = string.byte(hex,2);
local len2 = string.byte(hex,3);
local len3 = string.byte(hex,4);
local len4 = len3 + len2*256 + len1*256*256 + len0*256*256*256;
return len4;
end
--16进制转换为字符串
function hex2str(hex)
local str = "";
for i = 1, string.len(hex) do
local charcode = tonumber(string.byte(hex, i, i));
str = str .. string.format("%02X", charcode);
end
return str;
end
--按位填充
function myfillstr(align, pad, setlen, str)
local padstr = "";
local valstr = "";
while setlen > padstr:len() do
padstr = padstr .. pad;
--debug("padstr:" .. padstr);
end
if align == "L" then
valstr = padstr .. str;
valstr = string.sub(valstr, str:len()+1, setlen+str:len());
else
valstr = str .. padstr;
valstr = string.sub(valstr, 1, setlen);
end
return valstr;
end
--按字符拆分
function split(pString, pPattern)
local Table = {}
local fpat = "(.-)" .. pPattern
local last_end = 1
local s, e, cap = pString:find(fpat, 1)
while s do
--if s ~= 1 or cap ~= "" then
table.insert(Table,cap)
--end
last_end = e+1
s, e, cap = pString:find(fpat, last_end)
end
if last_end <= #pString then
cap = pString:sub(last_end)
table.insert(Table, cap)
end
return Table
end
--字符串转换为16位
function str2hex(str)
local hex = "";
for i = 1, string.len(str) - 1, 2 do
local doublebytestr = string.sub(str, i, i+1);
local n = tonumber(doublebytestr, 16);
if 0 == n then
hex = hex .. '\00';
else
hex = hex .. string.format("%c", n);
end
end
return hex;
end
--URL decode 转换
function escape(s)
return string.gsub(s, "([^A-Za-z0-9_])", function(c) return string.format("%%%02x", string.byte(c)) end)
end
--URL encode
function unescape(s)
return string.gsub(s, "%%(%x%x)", function(hex) return string.char(tonumber(hex, 16)) end)
end
--bcd展开
function to_hex(str)
return str:gsub(".", function(c) return string.format("%02X", c:byte(1)) end)
end
--bcd压缩
function to_bin(str)
return str:gsub("..", function(x) return string.char(tonumber(x, 16)) end)
end
--utf-8转换gbk
function u8_to_gbk(s)
return iconv.new("gbk", "utf-8"):iconv(s)
end
--gbk转utf-8
function gbk_to_u8(s)
return iconv.new("utf-8", "gbk"):iconv(s)
end
- 在lua中常用到的几个小函数
- vc中常用到的几个内存分配函数
- 几个数据分析中常用到的excel函数
- 在项目中常用到的几个注解@JsonInclude、@JsonFormat、@DateTimeFormat
- js中常用到的函数
- 注册表中常用到的几个路径
- zabbix中常用到的几个key:
- 网页设计中常用到的小技巧
- java中常用到的一些小知识
- LOTUS中常用到的API函数
- MATLAB中常用到的绘图函数
- MATLAB中常用到的绘图函数
- php项目中常用到的函数
- oracle中常用到的一些函数
- Memcached在使用中常用到的方法
- jpa在开发中常用到的注解
- 工作中常用到的命令和小知识
- 用到的几个javascripe 函数
- 两张图片相似度比较
- Python自学之String
- Pojo
- 在navicat for mysql中建立触发器
- 观察者模式
- 在lua中常用到的几个小函数
- Python自学之collection
- 帧速度的控制
- flash外部引入视频
- bzoj1635 最高的牛
- Yii的增删改查-分页
- D类功放设计
- C#CAD二次开发图案填充对象边界提取
- laraver的增删改查-分页