身份证号码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;
}
时间: 2024-10-07 22:59:58

身份证号码15位转18位 C#实现的相关文章

做一个牛XX的身份证号验证类(支持15位和18位)

原文:做一个牛XX的身份证号验证类(支持15位和18位) #region 是否合法的中国身份证号码 protected bool IsChineseID() { if (str.Length == 15) str = CidUpdate(str); if (str.Length == 18) { string strResult = CheckCidInfo(str); if (strResult == "非法地区" || strResult == "非法生日" |

简单的关于身份证(15位或者18位)合法性验证

package com.clark.test.idcard; /** * 测试校验身份证合法性的小程序 * <p>我们常用的身份证号码为18位或者15位</p> <p>下面的程序仅仅用于校验18为的身份证的合法性</p> * @author caolipeng * @date 2015年1月9日 上午10:27:13 * @Version 1.0 */ public class IDCardValidator { <span style="c

身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X

function checkIdCardNo(idCardNo) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (reg.test(idCardNo) === false) { wx.showToast({ title: '身份证号码不正确!', icon: 'none', }) return false; }

java中身份证号15位转18位

/** * 将15位转换为18位 * @param idCode 15位身份证号 * @return String 18位身份证号 */ public String toEighteen(String idCode) { idCode = idCode.substring(0, 6) + "19" + idCode.substring(6);//加入年份,变成17位 //计算校验位 begin char[] Ai = idCode.toCharArray(); int[] Wi = {

身份证号码 15位和18位 验证

首先先了解 身份证号码的编码规则,从百度经验上找到了别人的分享 :http://jingyan.baidu.com/article/7f41ececff944a593d095c8c.html 感谢. 15位长度的验证正则是从网上找的,但发现并不是万能的(月份可以出现00,日期可以出现00等), 所以做了如下改良,但仍旧存在一些问题,如880231这样的生日也可以验证功过 所以可以考虑将身份证号码的年月日单独判断,在此略去. 18位长度的就按校验规则来校验即可. function chkIdNo(

C# 身份证号码15位和18位验证

/// <summary> /// 身份证 /// </summary> [Serializable] public class IDCard {     /// <summary>     /// 身份证号     /// </summary>     public string IDCardNum { get; set; }     /// <summary>     /// 行政区     /// </summary>     

php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用

//验证身份证是否有效 function validateIDCard($IDCard) { if (strlen($IDCard) == 18) { return check18IDCard($IDCard); } elseif ((strlen($IDCard) == 15)) { $IDCard = convertIDCard15to18($IDCard); return check18IDCard($IDCard); } else { return false; } } //计算身份证的

身份证15位转18位

create or replace function changeaac002_15to18( ls_card varchar2)return varchar2 is ls_newcard varchar2(18);a1 number(10);a2 number(10);a3 number(10);a4 number(10);a5 number(10);a6 number(10);a7 number(10);a8 number(10);a9 number(10);a10 number(10);a

身份证号码18个数字代表的意思

一.前言介绍 中华人民共和国公民身份号码是中华人民共和国为中国大陆每个公民从出生之日起编定的唯一的.终身不变的身份代码,在中华人民共和国公民办理涉及政治.经济.社会生活等权益事务方面广泛使用.中华人民共和国公安部负责公民身份号码的编制和组织实施工作. 1999年8月26日中华人民共和国国务院发布<国务院关于实行公民身份号码制度的决定>(国发[1999]15号),这个文件规定自1999年10月1日起在全国建立和实行公民身份号码制度. 二.数字组成方式 1.地址码(身份证号码前六位) 表示编码对象