C#小程序15位转18位身份证号代码

2013-12-20  来源:本站原创  分类:C#教程  人气:7 

现在我们使用的都是18位身份证号,而以前都是15位身份证号,而如何将15位身份证号转18位身份证号转换为18位身份证号呢?

现在我们使用的都是18位身份证号,而以前都是15位身份证号,而如何将15位身份证号转18位身份证号转换为18位身份证号呢?

1、首先,在15位身份证的第6位之后加上“19”变为17位,即出生年月的年加上19,比如原来的92年就变为1992

2、然后,就是最后一位的计算,方法如下:

1)将1得到的17位身份证号,每一位乘以相应的系数,17位系数为{ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }

2)将(1)求得17个数相加求和为temp

3)将temp除以11取余,temp%=11;

4)将取余之后的结果作为尾数数组endNum[]的下标,找出对于的值endNum[temp],然后将endNum[temp]加到17位身份证之后变为18位,

尾数数组endNum[]={ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IDCard
{
    class Program
    {
        /// <summary>
        /// 主函数
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Console.Write("请输入15位身份证号:");
            string OldID=Console.ReadLine();//输入15身份证号
            string newId =IDCardTranslation(OldID);//新身份证号
            Console.WriteLine("18位新身份证号为:{0}",newId);//输出
            Console.ReadLine();
        }
        /// <summary>
        /// 15位身份证号转18位身份证号
        /// </summary>
        /// <param name="oldCard">15位身份证号</param>
        /// <returns>18位身份证号</returns>
        private static string IDCardTranslation(string oldCard)
        {
            int[] coefficient = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };//17位身份证号每一位的系数
            char[] endNum = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };//身份证最后一位数组
            if (oldCard.Length == 15)//判断是否是15位
            {
                string newID = oldCard.Insert(6, "19");//在15位身份证号的第6位之后添加19,变成17位
                int s = 0;
                for (int i = 0; i < 17; i++)//17位号码每一位都乘以相应的系数
                {
                    int temp = Convert.ToInt32(newID[i]) * coefficient[i];
                    s += temp;//乘系数之后求和
                }
                s %= 11;//除以11取余
                newID += endNum[s].ToString();//17位号码加上 余数所代表的下标在尾数数组endNum中的字符
                return newID;//返回新ID号码
            }
            else
            {
                return "";
            }
        }
    }
}
相关文章
  • js身份证判断方法支持15位和18位 2015-03-14

    这篇文章主要介绍了js身份证判断方法支持15位和18位,需要的朋友可以参考下 //HTML页面上要有一个id为identity_card的input输入框,一个id为ipmessage的身份证错误或正确时提示消息的地方 <script> //身份证验证 $(document).ready(function(){ $("#identity_card").change(function(){ var idcard =$(this).val(); checkDate(idcard

  • C#小程序15位转18位身份证号代码 2013-12-20

    现在我们使用的都是18位身份证号,而以前都是15位身份证号,而如何将15位身份证号转18位身份证号转换为18位身份证号呢? 现在我们使用的都是18位身份证号,而以前都是15位身份证号,而如何将15位身份证号转18位身份证号转换为18位身份证号呢? 1.首先,在15位身份证的第6位之后加上"19"变为17位,即出生年月的年加上19,比如原来的92年就变为1992 2.然后,就是最后一位的计算,方法如下: 1)将1得到的17位身份证号,每一位乘以相应的系数,17位系数为{ 7, 9, 10

  • vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别 2013-11-02

    工作中需要用到身份证验证,还要支持检查15位和18位. 我一时手懒,问同事有没有现成的函数可用,同事google了一下,扔给我一个 asp-vbscript版本的函数. 可我这边是客户端javascript呀,于是用改 vbs-->js 改完发现蛮好用的,同时发现 vbscript真的很??拢?尤恍戳?0多行,我改成js 只用了11行. 当然,我并完全是指vbscript??拢?歉鲂凑舛?bs代码的无名氏也是个唐僧性格..... 先放出 vbscript代码, <script language

  • javascript 身份证号码验证函数(可辨真伪,支持15或18位身份证号)测试误差为0 2014-11-19

    javascript 身份证号码验证函数(可辨真伪,支持15或18位身份证号)测试误差为0 ,非常不错,其实主要是特别熟悉身份证的算法. [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 更直接的测试代码就是: alert(test("身份证号码")); 经测试,上面的JS验证太强大了,输入正确的身份证后,随便改一位都报错!非常实用,以后大家就方便了解用户输入的身份证的正确与否了.

  • 旧的身份证号吗(15位)如何转换为新的(18位) 2012-03-09

    /* 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 15位身份证号码未位是双数是女性,单数是男性. 分配顺序码中"999.998.997.996"四个顺序号分别为男女性百岁以上老人专用的特定编号. 最后一位的計算公式∑(ai×Wi)(mod 11) */ 引用:http://zhidao.

  • 身份证号验证(兼容15,18位) 2013-09-06

    份证号验证(兼容15,18位) ,注册验证的时候可以用上. <?php //比较菜鸟 第一次分享代码 //身份证号验证 function checkIdCard(){ if ( empty ($_POST[ 'idcard' ])){ return false ; } $idcard = $_POST[ 'idcard' ]; $City = array (11=> "北京" ,12=> "天津" ,13=> "河北" ,

  • JavaScript验证18位身份证号码最后一位正确性的实现代码 2015-02-02

    这篇文章主要介绍了JavaScript验证18位身份证号码最后一位正确性的实现代码,小编亲测有效,需要的朋友可以参考下 根据身份证号码推算出最后一位的正确性,如果不正确还会给出正确结果,非常有意思的一断程序. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &l

  • 18位身份证校验计算函数 2012-03-09

    关于身份证第18是怎么计算的,原理如下 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码表示编码对象常住户口所在县(市.旗.区)的行政区划代码.生日期码表示编码对象出生的年.月.日,其中年份用四位数字表示,年.月.日之间不用分隔符.顺序码表示同一地址码所标识的区域范围内,对同年.月.日出生的人员编

  • 根据身份证号码计算出生日期.年龄.性别(18位) 根据入职时间计算工龄. 2014-10-06

    适用于OA项目中这些对档案的管理,需要的朋友可以参考下 1.根据身份证号码计算出生日期.年龄.性别(18位) //获取输入身份证号码 var UUserCard = $("#UUserCard").val(); //获取出生日期 //UUserCard.substring(6, 10) + "-" + UUserCard.substring(10, 12) + "-" + UUserCard.substring(12, 14); //获取性别 i

  • 用sql实现18位身份证校验代码分享 身份证校验位计算 2015-01-23

    这篇文章主要介绍了用SQL写的18位身份证校验代码,大家参考使用吧 身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 : 2.将这17位数字和系数相乘的结果相加: 3.用加出来和除以11,看余数是多少?: 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字.其分别对应的最后一位身份证的号码为1 0 X

  • 一个计算身份证号码校验位的Python小程序 2015-01-01

    闲着无事,便想写个实用点的Python小程序,如何计算机身份证号码的校验位,这样的文章在网上一抓一大把,这里仅简单介绍下吧 S = Sum(Ai * Wi), i=0,.......16 (现在的身份证号码都是18位长,其中最后一位是校验位,15位的身份证号码好像不用了) Ai对应身份证号码,Wi则为用于加权计算的值,它一串固定的数值,应该是根据某种规则得出的吧,用于取得最好的随机性,Wi的取之如下: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 经过加权计算之后,得到

  • javascript实现的平方米.亩.公顷单位换算小程序 2014-12-08

    这篇文章主要介绍了javascript实现的平方米.亩.公顷单位换算小程序,此代码通过URL传参的方式使用,也可以根据自己的需求做些改动,需要的朋友可以参考下 javascript实现平方米,亩,公顷单位换算,可以通过url传递参数指定输入框的值为任何中单位的值. 源代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/x

  • VB实现的16位和32位md5加密代码分享 2014-10-31

    这篇文章主要介绍了VB实现的16位和32位md5加密代码分享,需要的朋友可以参考下 在各种登陆系统中,用户密码的md5加密是不可少的. 这么说吧,即使你通过各种手段看到了用户的登陆密码,但那一串古古怪怪的东西你也不可能知道它是什么,这就是保护. md5加密运算是不可逆的,就是说你不能通过那一串古古怪怪的东西算出它原始的样子. 下面是完整的md5代码,不要去理解算法了,用到时拿去直接调用. Private Const BITS_TO_A_BYTE = 8 Private Const BYTES_T

  • python写的一个squid访问日志分析的小程序 2015-03-23

    这篇文章主要介绍了python写的一个分析squid访问日志的小程序,本文实现的目标是统计access.log中的ip数目,需要的朋友可以参考下 这两周组里面几位想学习python,于是我们就创建了一个这样的环境和氛围来给大家学习. 昨天在群里,贴了一个需求,就是统计squid访问日志中ip 访问数和url的访问数并排序,不少同学都大体实现了相应的功能,我把我简单实现的贴出来,欢迎拍砖: 日志格式如下: %ts.%03tu %6tr %{X-Forwarded-For}>h %Ss/%03Hs

  • 小程序员看 2011-06-08

    我还小,我才22,我是个程序员,经验尚浅,才工作一年. 我偶尔发现,有一位天才少年,开发出一款软件,功能之强大,无与伦比,性能之卓越,前无古人,很多公司抢着高薪聘请,谁让人才重金难寻呢!!而发现这些以后惭愧和自尊心会同时冲击我的大脑,惭愧自己白吃了这么多年馍,同时又告诉自己一定要成为了不起的英雄. 我喜欢看<非诚勿扰>,就是俩光头主持的征婚节目.现如今弱智娱乐节目一大堆,这一款算是唯一让我比较喜欢看的.因为我的生活圈太小,我见过的事物太少,而在这个节目里我可以看到不同职业.不同性格.不同经历的

  • [转]Eclipse 开发Android小程序遇到的问题总结 2013-07-30

    用Eclipse 开发Android小程序遇到些小问题,在一边学习的过程中,将遇到的问题就记录一下,方面挺杂的,有关于程序出错的,关于linux应用的,有eclipse设置等- 1.ERROR: Application requires API version 10. Device API version is 8 解决方法:修改两个配置文件 1:在AndroidManifest.xml里, <uses-sdk android:minSdkVersion="8" />找到這

  • size_t的32位和64位兼容 2014-12-25

    strlen与sizeof返回的类型都为size_t,而size_t在32位和64位下有不同的定义:32位下typedef unsigned int size_t,64位下typedef unsigned long size_t. 如果需要用printf来打印size_t类型的变量,用%d会出现32/64下不兼容的情况,编译器会给出waring.解决办法是使用%Zd或者%zd.%zd是C99规定的,%Zd是GNU的扩展. 关于z的解释可以在下面看到: The length modifier He

  • 数据结构基本概念和术语之位字节.字.位串.元素等 2014-02-15

    数据结构基本概念和术语:位.字节.字.位串.元素.数据域.物理结构.逻辑结构 位(Bit):"位(bit)"是电子计算机中最小的数据单位.每一位的状态只能是0或1. 字节(Byte):8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位.1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间. 字:"字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长.例如一台8位机,它的1个字就等于1个

  • python 提取文件的小程序 2014-05-07

    在做网站项目时,开发经常要给工程一个升级包,包含本次修改的内容,这个升级包的内容就是tomcat的发布目录下的文件: 以前提取这些文件用的是一同事些的批处理文件:用起来不怎么顺手,刚好最近在学些python,所有就自己动手写了一个python提取文件的小程序: 1.原理 提取文件的原理很简单,就是到一个指定的目录,找出最后修改时间大于给定时间的文件,然后将他们复制到目标目录,目标目录的结构必须和原始目录一致,这样工程人员拿到后就可以直接覆盖整个目录: 2.实现 为了程序的通用,我定义了下面的配置

  • Shell脚本判断Linux系统是32位还是64位的几种方法分享 2014-05-07

    这篇文章主要介绍了Shell脚本判断Linux系统是32位还是64位的几种方法分享,本文共给出了4种方法实现系统位数在判断,需要的朋友可以参考下 一行就能搞定,输出32或者64. 可以用"getconf WORD_BIT"和"getconf LONG_BIT"获得word和long的位数,64位系统中应该分别得到32和64. 参考代码如下: ldconfig if [ $(getconf WORD_BIT) = '32' ] && [ $(getco