没什么解释,直接贴代码
cnid.lua 这个不是重点
--verify cnid
function verify_cnid(id)
--校验位
local verifymap = {1, 0, 88, 9, 8, 7, 6, 5, 4, 3, 2}
--加权因子
local factor = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}
--加权和
local sum = 0
local index = 1
while index ~= 18 do --身份证长18位
sum = sum + (id[index]) * factor[index]
index = index + 1
end
--求模11
local r = sum % 11
if verifymap[r + 1] == id[18] then
return true
else
return false
end
end
luacnid.cpp
#include <cstdlib>
#include <iostream>
extern "C" {
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
}
typedef unsigned short wchar;
//point to Lua Interpreter
//lua_State *L;
bool lua_verify(lua_State *L, wchar * id, int len)
{
//get lua function name
lua_getglobal(L, "verify_cnid");
//get lua function parame