zoukankan      html  css  js  c++  java
  • 身份证号码15位转18位 C#实现

    身份证最后一位神秘X的由来】身份证中的“冷知识”
    1999年的今天,《国务院关于实行公民身份号码制度的决定》被发布,当年10月1日实施。为什么有的有X?这位数是根据前17位计算出的校验码。如某人尾号是0-9,不会有X,如是10,则用X代替。Ⅹ是罗马数字的10,这能保证身份证号不多位。

    /// <summary>
    /// 转换15位身份证号码为18位
    /// </summary>
    /// <param name="oldIDCard">15位的身份证</param>
    /// <returns>返回18位的身份证</returns>
    private string IDCard15To18(string oldIDCard)
    {
        int iS = 0;
    
        //加权因子常数 
        int[] iW = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
        //校验码常数 
        string LastCode = "10X98765432";
        //新身份证号 
        string newIDCard;
    
        newIDCard = oldIDCard.Substring(0, 6);
        //填在第6位及第7位上填上‘1’,‘9’两个数字 
        newIDCard += "19";
    
        newIDCard += oldIDCard.Substring(6, 9);
    
        //进行加权求和 
        for (int i = 0; i < 17; i++)
        {
            iS += int.Parse(newIDCard.Substring(i, 1)) * iW[i];
        }
    
        //取模运算,得到模值 
        int iY = iS % 11;
        //从LastCode中取得以模为索引号的值,加到身份证的最后一位,即为新身份证号。 
        newIDCard += LastCode.Substring(iY, 1);
        return newIDCard;
    }
    

      

  • 相关阅读:
    函数的设计和使用
    python正则表达式
    Python字符串
    Python序列(十一)集合
    centos 磁盘分区、格式化及挂载
    Nginx下配置SSL证书 调转到IIS、tomcat二级站点
    Mime 类型列表
    WCF学习- 体系结构
    .NET Framework Client Profile 简介
    WCF学习- 基础概念
  • 原文地址:https://www.cnblogs.com/fanyong/p/2750252.html
Copyright © 2011-2022 走看看