几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-29, 05:46 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】通用函数 身份证号码升位 - 精华帖集合

通用函数 身份证号码升位 - 精华帖集合
www.dimcax.com
通用函数 身份证号码升位
, , ,
;;;========================================================
;;;功能:通用函数 由15或17位身份证号码计算其效验码
;;;参数:id ----15或17位长度字符串表示的身份证号码
;;;返回:效验码字符 ,或nil
;;;日期:zml84 于 2007-12-17
(defun getk (id / lst_id i lst_w tmp)
(if (or (= (strlen id) 15)
(= (strlen id) 17)
)
(progn
;;如果是15位,则年份添加19
(if (= (strlen id) 15)
(setq id (strcat (substr id 1 6) "19" (substr id 7)))
)
;;化为数字表
(setq lst_id '()
i 17
)
(repeat 17
(setq lst_id (cons (atoi (substr id i 1)) lst_id))
(setq i (1- i))
)
;;加权因子
(setq lst_w '(7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2))
;;计算和
(setq tmp 0
i 0
)
(repeat 17
(setq tmp (+ tmp (* (nth i lst_id) (nth i lst_w))))
(setq i (1+ i))
)
;;取模
(setq tmp (rem tmp 11))
;;查表得效验码
(substr "10x98765432" (1+ tmp) 1)
)
)
)
;;;============================================================
;;;功能:身份证号码由15位或17升为18位
;;;参数:id ----长度15或17字符串表示的身份证号码
;;;返回:升位后的18位身份证号码 ,或nil
;;;日期:zml84 于 2007-12-17
(defun test1 (id / k)
(if (or (= (strlen id) 15)
(= (strlen id) 17)
)
(progn
;;如果是15位,则年份添加19
(if (= (strlen id) 15)
(setq id (strcat (substr id 1 6) "19" (substr id 7)))
)
;;获取效验码
(setq k (getk id))
;;返回
(strcat id k)
)
)
)
;;;============================================================
;;;功能:18位身份证号码验证
;;;参数:id ----长度18字符串表示的身份证号码
;;;返回:若正确返回t,否则nil
;;;日期:zml84 于 2007-12-17
(defun test2 (id / k)
(and (= (strlen id) 18)
;;获取效验码
(setq k (getk (substr id 1 17)))
;;返回
(= k (strcase (substr id 18)))
)
)
;;;============================================================
[ ]
楼主辛苦了
赛,这算法怎么得到的?
书山有路勤为径,学海无涯苦作舟!
这就叫强,哈哈,看了许多遍,就一个字,强!
impossible is nothing
厉害,顶起
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 11:07 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多