功能:将15的身份证号升为18位(根据GB 11643-1999) 
参数:原来的号码(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位相关推荐

  1. Excel如何快速将15位身份证号码转为18位

    今天跟大家分享一下Excel如何快速将15位身份证号码转为18位 ​ 1.首先我们选中身份证号码单元格区域 2.点击[DIY工具箱] 3.点击[身份证]选择[15位身份证证升18位] 4.点击[确定] ...

  2. 关于18位身份证号码最后一位计算(Java实现)

    关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...

  3. 18位身份证号码最后一位校验码的计算方法

    介绍18位身份证号码最后一位校验码的计算方法 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. ...

  4. 身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别

    /*身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别 提示:第17为数字字符奇数为男,偶数为女 */ #include #include #include #inclu ...

  5. 18位身份证号码最后一位校验

    1 package com.jdk7.chapter5; 2 3 /** 4 * 仅能校验15位或18位身份证号的校验码 5 * @author Administrator 6 * 7 */ 8 pu ...

  6. python身份证号码共18位_18位身份证校验

    数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小 ...

  7. 15位身份证号和18位身份证号截取生日

    CASE WHEN T1.IDTYPE=01 AND LENGTH(TRIM(T1.IDNO))=15 THEN '19'||SUBSTR(T1.IDNO,7,6)WHEN T1.IDTYPE=01 ...

  8. 15位身份证号转18位

    '这是根据csdn上找到的java的源码改的 'Enjoy it     Public Function Old2New(ByVal OldID As String) As String        ...

  9. java代码实现15位身份证号码升级到18位

    转载网址   点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...

  10. 18位身份证号码规则及js验证

    2019独角兽企业重金招聘Python工程师标准>>> 一.中国居民身份证号码规则 18位身份证号码编码规则:根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份 ...

最新文章

  1. json解析:[1]gson解析json
  2. 集合框架(List的三个子类的特点)
  3. 2019年陕西省普通高校招生考生成绩统计表(理工、艺理、体育)
  4. 关于flex布局,我大多数常用的几个点
  5. 原创:机器学习代码练习(一、回归)
  6. javaweb分页查询oracle,JavaWeb项目 利用Oracle数据库实现分页查看细讲
  7. Web Worker javascript多线程编程(一)
  8. Atitit xml框架类库选型 attilax总结
  9. Kubernetes 小白学习笔记(14)--k8s集群路线-kubernetes核心组件详解
  10. 帮助朋友干活,平生第一次收到月饼
  11. XCode之第一次亲密接触
  12. 腾达ap设置说明_腾达路由器怎么设置AP模式?
  13. 【网络】java密码安全
  14. C语言—打印1000年到2000年的闰年
  15. 我国第一部纯国产超级计算机,纯国产超级计算机获得世界冠军
  16. Bernstein基函数及其性质 matlab实现
  17. 宅男福利!我用Python做了一个B站跳舞的小姐姐,满屏的美腿!
  18. 医学知识-FFR(冠状动脉血流储备分数)
  19. 当代副业刚需,分享几个好评如潮的程序员接外包私活网站
  20. GAppProxy完整安装过程

热门文章

  1. 小白怎样学习数据分析?
  2. 树莓派搭建家庭影音媒体系统Kodi
  3. 图片放大不模糊的解决方法
  4. 二、BGP的路由原理
  5. Parsing error: Cannot read file ‘e:\.....\tsconfig.json‘. eslint
  6. 移动适配(引入js知识)
  7. 基于FTTH组网的qinq业务的配置
  8. RFID电子配线架系统
  9. 测试数据--Excel 获取百家姓
  10. u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)