18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》号码的结构和表示形式

1、号码的结构

公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

2、地址码

表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。

3、出生日期码

表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。

4、顺序码

表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

5、校验码

(1)十七位数字本体码加权求和公式

S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和

Ai:表示第i位置上的身份证号码数字值

Wi:表示第i位置上的加权因子

Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

(2)计算模

Y = mod(S, 11)

(3)通过模得到对应的校验码

Y:         0 1 2 3 4 5 6 7 8 9 10

校验码: 1 0 X 9 8 7 6 5 4 3 2

1

publicstringPersonID15To18(stringperson15ID)2

{3if(person15ID.Length!=15)4

{5return"";6            }7

int[] w=newint[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//加权因子8char[] LastCode="10X98765432".ToCharArray();//校验码常数9stringtmpNewID=person15ID.Substring(0,6);10inttmpYear=int.Parse(person15ID.Substring(6,2));11if(tmpYear<10)//2000年后出生12

{13                tmpNewID+="20";//其实没有必要14}15else16

{17                tmpNewID+="19";18            }19            tmpNewID+=person15ID.Substring(6,9);//完成15到18位的补码2021//进行加权求和22ints=0;23for(inti=0; i<17; i++)24

{25                s+=int.Parse(tmpNewID.Substring(i,1))*w[i];26            }2728inty=s%11;//取模运算,得到模值29//取模值为索引号的值30tmpNewID+=LastCode[y];3132returntmpNewID;33        }

mysql 计算15位身份证_15位到18位身份证的升级计算相关推荐

  1. absolute 必须 relative_Workfine如何控制身份证号码必须为18位?

    在信息化系统的设计中,由于业务的需要,我们往往需要设置许多控制项,以保证系统能够按照业务要求流转,必须出库数量不能超过库存,人员信息不能重复录入,考勤区间不能有交叉等.此篇以实例的方式告诉大家如果通过 ...

  2. 某8位微型计算机地址码为18位,计算机组成原理复习题.doc

    计算机组成原理复习题 1.3说明高级语言.汇编语言和机器语言的差别及其联系. 答:高级语言使用时程序员不需要了解实际应用的机型.内部的具体组成及其指令系统,只用掌握这类高级语言的语法和语义,便可直接用 ...

  3. js从字符串中提取身份证号,连续18位数字

    <!DOCTYPE html> <html> <head><title>提取身份证号</title><meta charset=&qu ...

  4. 二、五、输入身份证号,输出此人的出生年月日。注意限制输入的身份证号只能为18位,第7位开始即为出生年月日

    n = input("请输入身份证号") a=n[6:10]#前面包括后面不包括 b=n[10:12] c=n[12:14] print(a,b,c)

  5. 二、5.输入身份证号,输出此人的出生年月日。注意限制输入的身份证号只能为18位,第7位开始即为出生年月日

    作业 n = input("请输入身份证号") s1 = list(n) year = " " month = " " day = &quo ...

  6. 标准的身份证验证(第18位校验码)

    不学无术 原本以为身份证就判断位数 年月 var cardNo = Id_card; if(Id_card.length == 18){ Id_card = Id_card.split(''); // ...

  7. 某8位微型计算机地址码为18位,2015广东海洋大学计算机组成原理试题

    一.选择题 1.在定点运算器中,无论采用双符号位还是单符号位,必须有___溢出判断电路___ ,它一般采用来____异或门__实现. 2.同步控制是___由统一时序信号控制的方式___. 3.在微型机 ...

  8. Java根据15位或者18位身份证号计算年龄代码

    首先,需要验证身份证号码的长度是否为15位或18位.然后,如果身份证号码长度为18位,可以使用substring()方法来获取出生年月日的信息.例如,获取出生年份可以使用substring(6, 10 ...

  9. mysql 怎么用SQL语句将老身份证号15位补位到新身份证号18位

    一.15位的身份证和18位的身份证的区别是什么? 只有15位号码的就是第一代身份证,而18位号码的则是第二代身份证.15位的身份证和18位的身份证的区别是:第二代身份证比第一代身份证增加了出生年份中的 ...

  10. java身份证工具类(校验身份证是否合法、通过身份证获取年龄、性别、生日,将15位身份证转为18位等)

    一.简介 因为工作需要经常用到身份证做一些相关操作,于是通过查阅资料总结出一些常用的工具方法,包括校验身份证是否合法.通过身份证获取年龄.通过身份证获取性别.通过身份证获取户籍地址.通过身份证获取生日 ...

最新文章

  1. GitHub 标星 2.5K+,U^2-Net 跨界肖像画,完美复刻人物细节!
  2. mnn python例子
  3. 清除ASP.Net缓存
  4. 1.2 private 关键字 面向对象封装
  5. python改文件名_通过python顺序修改文件名字的方法
  6. 网络系统服务器子系统,网管系统中服务器及网络设备监控子系统的设计与实现...
  7. WebForms VS. MVC(翻译)
  8. php批量getshell,任意文件上传引发的批量Getshell到服务器 - WileySec's Blog
  9. HttpURLConnection的流式输出的缺陷和解决方法
  10. k8s使用kube-router网络插件并监控流量状态 1
  11. java什么叫用例_BigInteger的.isProbablePrime()的可能用例是什么?
  12. YV12数据与AVFrame的相互转换
  13. 跨境电商如何选择并且下载专用浏览器?电商浏览器下载指南
  14. logit回归怎么看显著性_spss logistic回归分析结果如何分析
  15. 尚融宝28-投资列表展示
  16. 序贯蒙特卡洛的粒子简并性问题
  17. 关于循环调用Variable RNN的reuse问题
  18. linux如何批量操作,linux批量操作命令锦集
  19. 高级Java开发招聘
  20. 局域网 --- 共享文件夹设置与访问

热门文章

  1. 浅谈:winform界面设计
  2. 转载 TheBrain7.0.3.2(PersonalBrain7.0.3.2)和谐文件
  3. 水叮当的舞步 深搜
  4. 倩女幽魂显示服务器繁忙,倩女幽魂手游新服首开服务器爆满,万人排队逼疯玩家...
  5. 怎么写伪原创文章,可以自动生成么?
  6. win10卸载git_打造 Win10 终极开发环境
  7. 怎么查看计算机显卡类型,电脑怎么看显卡参数?查看电脑显卡参数的四种方法...
  8. camtasia studio导出1080p高清视频的设置
  9. ElasticSearch学习 ④ IK分词器(elasticsearch插件)+自定义字典
  10. python中float什么意思_在python中 float是什么意思?