自动转换15位身份证号码位18位
参数:原来的号码(15位)
返回:升位后的18位号码
用法:=IDCODE(a1) (假设A1放的是原15位号码)
关于身份证号码最后一位的校验码的算法如下:
我国现行使用公民身份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗。
〖GB 11643-1989〗中规定的是15位身份证号码:排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。
〖GB 11643-1999〗中规定的是18位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
公式如下:
∑(a[i]*W[i]) mod 11 ( i = 2, 3, …, 18 ) (1)
”*” 表示乘号
i——–表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。
a[i]—–表示身份证号码第 i 位上的号码
W[i]—–表示第 i 位上的权值 W[i] = 2^(i-1) mod 11
计算公式 (1) 令结果为 R
根据下表找出 R 对应的校验码即为要求身份证号码的校验码C。
R 0 1 2 3 4 5 6 7 8 9 10
C 1 0 X 9 8 7 6 5 4 3 2
由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的身份证号码中可能含有非数字的字母X。
Function IDCode(sCode15)
Dim i,num
Dim code
num = 0
IDCode = Left(sCode15, 6) + “19″ + Right(sCode15, 9)
‘ 计算校验位
For i = 18 To 2 Step -1
num = num + (2 ^ (i - 1) Mod 11) * (Mid(IDCode, 19 - i, 1))
Next
num = num Mod 11
Select Case num
Case 0
code = “1″
Case 1
code = “0″
Case 2
code = “X”
Case Else
code = Trim(CStr(12 - num))
End Select
IDCode = IDCode + code
End Function
转载于:https://www.cnblogs.com/RuiLei/archive/2006/01/16/318372.html
自动转换15位身份证号码位18位相关推荐
- Excel如何快速将15位身份证号码转为18位
今天跟大家分享一下Excel如何快速将15位身份证号码转为18位 1.首先我们选中身份证号码单元格区域 2.点击[DIY工具箱] 3.点击[身份证]选择[15位身份证证升18位] 4.点击[确定] ...
- 关于18位身份证号码最后一位计算(Java实现)
关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...
- 18位身份证号码最后一位校验码的计算方法
介绍18位身份证号码最后一位校验码的计算方法 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. ...
- 身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别
/*身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别 提示:第17为数字字符奇数为男,偶数为女 */ #include #include #include #inclu ...
- 18位身份证号码最后一位校验
1 package com.jdk7.chapter5; 2 3 /** 4 * 仅能校验15位或18位身份证号的校验码 5 * @author Administrator 6 * 7 */ 8 pu ...
- python身份证号码共18位_18位身份证校验
数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小 ...
- 15位身份证号和18位身份证号截取生日
CASE WHEN T1.IDTYPE=01 AND LENGTH(TRIM(T1.IDNO))=15 THEN '19'||SUBSTR(T1.IDNO,7,6)WHEN T1.IDTYPE=01 ...
- 15位身份证号转18位
'这是根据csdn上找到的java的源码改的 'Enjoy it Public Function Old2New(ByVal OldID As String) As String ...
- java代码实现15位身份证号码升级到18位
转载网址 点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...
- 18位身份证号码规则及js验证
2019独角兽企业重金招聘Python工程师标准>>> 一.中国居民身份证号码规则 18位身份证号码编码规则:根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份 ...
最新文章
- json解析:[1]gson解析json
- 集合框架(List的三个子类的特点)
- 2019年陕西省普通高校招生考生成绩统计表(理工、艺理、体育)
- 关于flex布局,我大多数常用的几个点
- 原创:机器学习代码练习(一、回归)
- javaweb分页查询oracle,JavaWeb项目 利用Oracle数据库实现分页查看细讲
- Web Worker javascript多线程编程(一)
- Atitit xml框架类库选型 attilax总结
- Kubernetes 小白学习笔记(14)--k8s集群路线-kubernetes核心组件详解
- 帮助朋友干活,平生第一次收到月饼
- XCode之第一次亲密接触
- 腾达ap设置说明_腾达路由器怎么设置AP模式?
- 【网络】java密码安全
- C语言—打印1000年到2000年的闰年
- 我国第一部纯国产超级计算机,纯国产超级计算机获得世界冠军
- Bernstein基函数及其性质 matlab实现
- 宅男福利!我用Python做了一个B站跳舞的小姐姐,满屏的美腿!
- 医学知识-FFR(冠状动脉血流储备分数)
- 当代副业刚需,分享几个好评如潮的程序员接外包私活网站
- GAppProxy完整安装过程
热门文章
- 小白怎样学习数据分析?
- 树莓派搭建家庭影音媒体系统Kodi
- 图片放大不模糊的解决方法
- 二、BGP的路由原理
- Parsing error: Cannot read file ‘e:\.....\tsconfig.json‘. eslint
- 移动适配(引入js知识)
- 基于FTTH组网的qinq业务的配置
- RFID电子配线架系统
- 测试数据--Excel 获取百家姓
- u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)