table.unpack遇到的问题

做了个中转的服务, socket+json 传递数据,

通过 {...} 封装不定参数然后 json.encode 传递到其他服务器,

然后其他服务器 json.decode之后再通过 table.unpack 解出之前 {...} 里面的参数,

如果这里是 table 还好,如果这里面是 n 个整型数据的话,后面会多了个 .0

例如, 1 会被转成 1.0,这会带来一些麻烦。

调查了许久,发现不是 json 导致的,而是在 table.unpack 导致的,

所以根据网上找到的方法,重写了一个 unpack 的方法以及一个判断数组的方法,如下:


function util.unpack(t,i)
i = i or 1
if t[i] ~= nil then
if type(t[i]) == "number" and t[i]%1 == 0 then
t[i] = t[i] >> 0
end
return t[i],util.unpack(t,i+1)
end
end --检查是否是数组类型
function util.checkArray(a)
if type(a) ~= "table" then return false end
local count = 0
for k,v in pairs(a) do
if type(k) ~= "number" then return false end
count = count + 1
end for i=1,count do
if not a[i] and type(a[i]) ~= "nil" then return false end
end return true
end

身份证检测



local CITIES = {
[11]="北京",[12]="天津",[13]="河北",[14]="山西",[15]="内蒙古",[21]="辽宁",[22]="吉林",[23]="黑龙江",[31]="上海",
[32]="江苏",[33]="浙江",[34]="安徽",[35]="福建",[36]="江西",[37]="山东",[41]="河南",[42]="湖北",[43]="湖南",[44]="广东",
[45]="广西",[46]="海南",[50]="重庆",[51]="四川",[52]="贵州",[53]="云南",[54]="西藏",[61]="陕西",[62]="甘肃",[63]="青海",
[64]="宁夏",[65]="新疆",[71]="台湾",[81]="香港",[82]="澳门",[91]="国外"}
local WIEGHTS = {
[1]=7,[2]=9,[3]=10,[4]=5,[5]=8,[6]=4,[7]=2,[8]=1,[9]=6,[10]=3,[11]=7,[12]=9,[13]=10,[14]=5,[15]=8,[16]=4,[17]=2
}
local MOD = {
'1','0','a','9','8','7','6','5','4','3','2'
}
local function checkID(sId)
local iSum=0
local info=""
local index = 1
local result
for a in string.gmatch( sId,"%d+" ) do
-- print(index, a)
result = a
index = index + 1
end
-- print("index ",index)
if index > 2 then return false,"[1]格式非法" end
if #result < 17 then return false, "[2]格式非法" end
if #result == 17 and sId:sub(18,18) ~= "x" then return false, "[3]格式非法" end
sId = sId:lower(sId)
sId = string.gsub(sId,"x","a") if CITIES[tonumber( string.sub( sId,1,2 ) )] == nil then
return false,"非法地区"
end
local bYear = tonumber(string.sub(sId,7,10))
local bMonth = tonumber(string.sub(sId,11,12))
local bDay = tonumber(string.sub(sId,13,14)) if bMonth <= 0 or bMonth > 12 then return false, "[4]格式非法" end
if bDay <= 0 or bDay > 31 then return false, "[5]格式非法" end local sBirthday = os.date("*t", os.time{year=bYear,month=bMonth,day=bDay})
local sToday = os.date("*t", os.time())
local age = sToday.year-sBirthday.year
if age < 0 or age > 100 then return false, "[6]格式非法" end for i = 1,17 do
iSum = iSum + tonumber(sId:sub(i,i))*WIEGHTS[i]
end
local verifycode = sId:sub(18,18)
local modecode = MOD[iSum%11 + 1]
-- print(iSum,iSum%11+1,verifycode,modecode)
if modecode ~= verifycode then return false,"[7]格式非法" end return true
end

手机号检测


string.match(phoneno,"[1][3,4,5,7,8,9]%d%d%d%d%d%d%d%d%d") ~= phoneno

LUA的一些工具备份的更多相关文章

  1. Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区

    Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区 Lua包管理工具Luarocks详解

  2. Lua内存分析工具

    最近给公司写了一个lua内存分析工具,可以非常方便的分析出Lua内存泄露问题,有图形化界面操作,方便手机端上传快照等功能 内存分析我是在c语言端写的,也有人写过lua端的分析工具,也蛮好用的,不过lu ...

  3. MySQL/MariaDB数据库的mysqldump工具备份还原实战

    MySQL/MariaDB数据库的mysqldump工具备份还原实战 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mysqldump概述 1>.逻辑备份工具 mysq ...

  4. lua UT测试工具

    luaunit Luaunit is a unit-testing framework for Lua, in the spirit of many others unit-testing frame ...

  5. MongoDB,客户端工具备份数据库

    本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首先要连接本地服务器以及远程服务器数据库 2.在本地服务器(127.0.0.1)中,右 ...

  6. MongoDB学习(四)客户端工具备份数据库

    在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...

  7. 老毛桃pe装机工具备份系统

    电脑故障可以说是难以避免的,误操作或者修改了哪个设置系统就莫名其妙崩溃了.这在日常使用当中并不鲜见,许多用户就会寻求备份系统方法.有没有好的一键备份系统教程可以参考呢?在本篇教程中,就容我跟大家讲讲怎 ...

  8. 【Lua】LDoc生成Lua文档工具的使用

    参考资料: http://my.oschina.net/wangxuanyihaha/blog/188909   LDoc介绍:     LDoc是一个Lua的文档生成工具,过去,比较常用的Lua生成 ...

  9. lua调试的工具选择

    近期看到一个关于vs的lua调试插件, 装了vs2012试了下, 忍不住发此文总结下lua各种调试工具 Decoda 这是现今地球上调试lua5.1最方便的工具, 没有之中的一个. 强大的注入式调试, ...

  10. Navicat工具备份还原mysql数据库详细图解

    Navicat是个很不错的MYSQL数据库管理工具,我们常用的还web形式的phpmyadmin和font这三种了,都是非常不错的mysql管理工具.因为Navicat工具兼容性比较好,操作也比较简单 ...

随机推荐

  1. JVM系统参数

    JVM(Java虚拟机)是Java程序的运行环境,它可以通过一些系统参数进行配置和优化.以下是一些常用的JVM系统参数: 1. -Xmx: 用于设置JVM堆的最大内存大小.例如,-Xmx1g表示将堆的 ...

  2. OCR -- 文本识别 -- 理论篇

    文本识别的应用场景很多,有文档识别.路标识别.车牌识别.工业编号识别等等,根据实际场景可以把文本识别任务分为两个大类:规则文本识别和不规则文本识别. 规则文本识别:主要指印刷字体.扫描文本等,认为文本 ...

  3. 2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络中,只有当 graph[i][j] = 1 时,节点 i 能够直接连接到另一个节点 j。

    2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络中,只有当 graph[i][j] = 1 时,节点 i 能够直接连接到另一个节点 j. ...

  4. zabbix 监控nginx

    nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,可以利用这个功能编写zabbix监控 ...

  5. k8s+log-pilot日志收集

    github 地址:https://github.com/AliyunContainerService/log-pilot 介绍 log-pilot是一个很棒的 docker 日志工具.可以从dock ...

  6. 什么是 CSR、SSR、SSG、ISR - 渲染模式详解

    本文以 React.Vue 为例,介绍下主流的渲染模式以及在主流框架中如何实现上述的渲染模式. 前置知识介绍 看渲染模式之前我们先看下几个主流框架所提供的相关能力,了解的可跳到下个章节. 挂载组件到 ...

  7. 大数据面试题集锦-Hadoop面试题(四)-YARN

    你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案.如果你需要更多的面试经验和面试题,关注一下"张飞的猪大数据分享"吧,公众号会不定时的分享相关的知识和资料. 目录 ...

  8. 音视频开发进阶——YUV与RGB的采样与存储格式

    在上一篇文章中,我们带大家了解了视频.图像.像素和色彩之间的关系,还初步认识了两种常用的色彩空间,分别是大家比较熟悉的 RGB,以及更受视频领域青睐的 YUV.今天,我们将继续深入学习 RGB.YUV ...

  9. ZEGO自研RTC+直播系统架构,如何支撑一场高质量直播

    近年来得益于网络基础设施的进步,实时音视频(Real-Time Communication,以下简称 RTC)和直播(采用 CDN 进行内容分发)在各行业迅速落地,在疫情的催化下更是推动传统的教育.会 ...

  10. 解决Oracle jdbc驱动包maven下载失败问题

    由于Oracle版权限制,其jdbc驱动包不让人随便下载,这就给maven的下载和编译带来了麻烦. 解决办法是先获取jar包(方法一:去oracle官网下载,方法二:去oracle安装目录如produ ...