//*********************************************************************************
//将15位身份证转换成18位时,首先把出生年扩展4位,就是在原来15位号码的第6为数字后
//增加一个19,然后在第17位数字后添加一位校验码,校验码是由前17位数字本体码加权求
//和公式,通过计算模,再通过模得到对应的校验码。
//计算校验码公式
//(1)17位数字本体码加权求和公式
//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
//*****************************************************************************
/// <summary>
/// 将15位的身份证号码转换成18位的身份证好码
/// </summary>
/// <param name="idCard">身份证号码</param>
/// <returns>返回18位身份证号码</returns>
public static string Convert15to18 (string idCard)
{
string code = idCard.Trim();//获得身份证号码
if (code.Length==15)//如果是15位则转换
{
char[] strJY ={ ''1'', ''0'', ''X'', ''9'', ''8'', ''7'', ''6'', ''5'', ''4'', ''3'', ''2'' };
int[] intJQ ={ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
string strTemp;
int intTemp = 0;
strTemp = code.Substring(0, 6) + "19" + code.Substring(6);
for (int i = 0; i <= strTemp.Length - 1; i++)
{
intTemp = intTemp + int.Parse(strTemp.Substring(i, 1)) * intJQ[i];
}
intTemp = intTemp % 11;
return strTemp + strJY[intTemp];
}
else
{
if (code.Length == 18)//如果是18位直接返回
{
return code;
}
return string.Empty;//如果即不是15位也不是18位则返回空
}
}
/// <summary>
/// 获得出身年月日
/// </summary>
/// <param name="idCard">身份证号码</param>
/// <returns>返回出身年月日</returns>
public static string GetBirth(string idCard)
{
string code = Convert15to18(idCard);//获得身份证号码
if (code != string.Empty)
{
string year = code.Substring(6, 4);//获得身份证号码里面的年
string month = code.Substring(10, 2);//获得身份证号码里面的月
string day = code.Substring(12, 2);//获得身份证号码里面的日
return year + "年" + month + "月" + day + "日";
}
else
{
return string.Empty;
}
}

  

16Aspx.com-将15位身份证转换成18位的更多相关文章

  1. PHP实现15位身份证号转18位

    PHP实现15位身份证号转18位 参考博客: 作者:selfimpr626 来源:CSDN (根据身份证号计算年龄,15位身份证号码转18位) 原文:https://blog.csdn.net/wei ...

  2. 将真彩色转换成增强色的方法(即RGB32位或RGB24位颜色转换成RGB16位颜色的函数)

    今天由于程序需要,需要将真彩色转换成增强色进行颜色匹配,上网搜了一下没搜到相应函数,于是研究了一下RGB16位的增强色,写了这个函数: public static int RGB16(int argb ...

  3. sql 将8位字符串转换成日期型

    将8位字符串转换成日期型,方法如下: ),)

  4. juqery 判断所有input 不能为空 判断只能为数字 判断身份证号:18位和15位 判断是否银行卡号

    //jq 判断某字符串是否含有特殊符号 function CheckNum() { //定义数组保存特殊字符 var AllNumIsSame = new Array("’", & ...

  5. 网络图片转换到本地并转换成base64位

    /** * 网络图片转换到本地并转换成base64位 * @param $url * @return string */ public function imgzhuanhuan($url) { // ...

  6. GUID转换成16位字符串或19位唯一字符串

    整理几个经常使用GUID转换成16位字符串或19位唯一字符串方法: /// <summary> /// 依据GUID获取16位的唯一字符串 /// Author : 付义方 /// < ...

  7. 将int型数字转换成6位字符串,不足的时候,前面补0

    将int型数字转换成6位字符串,不足的时候,前面补0 方法一: int num = 123; num.ToString("000000"); 方法二: int num = 123; ...

  8. C# 13位时间戳转换成标准时间C#代码

    原地址:https://www.cnblogs.com/yixuehan/p/5559244.html /// <summary> /// 时间戳转换成标准时间 /// </summ ...

  9. 【读书笔记】C Primer Plus ch.15位运算 示例程序15.1 整数转换成二进制字符串

    正文: https://www.zybuluo.com/RayChen/note/595213

随机推荐

  1. B1051 复数乘法(15 分)

    [PAT]B1051 复数乘法(15 分) - 路明天 - 博客园 https://www.cnblogs.com/hebust/p/9496809.html 在此对四舍五入输出结果做总结. 对于do ...

  2. Cuba studio框架中使用thymeteaf模板时中文乱码

    最近公司换了Cuba这个orm框架,框架中使用了thymeteaf模板技术,发现在html中解析汉字一直是乱码的存在 一直以为是tomcat的问题但是tomcat的server.xml,项目中的web ...

  3. C++ 11 从C++ primer第五版的学习笔记

    1. auto (page107) auto 推断会忽略const   const int ci = i, & cr = ci; auto b = ci; // b is an int (to ...

  4. .net core 项目加载提示项目文件不完整缺少预期导入的解决办法

    今天把在远端的仓库的代码在另一台电脑上拷贝下来,电脑上.net core 环境也已经安装了,但是发现有几个项目没有加载成功,然后重新加载项目,vs2017却提示 项目文件不完整,缺少预期导入 查看错误 ...

  5. centos使用--zsh

    目录 1 切换到zsh 1.1 查看系统当前的shell 1.2 查看bin下是否有zsh包 1.3 安装zsh包 1.4 切换shell至zsh 2 安装oh-my-zsh 2.1 oh-my-zs ...

  6. 【3Sum】cpp

    题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find al ...

  7. Windows网络编程笔记4 -- Winsock 协议相关知识

     Win32平台上的Winsock编程,Winsock是一个与协议无关的接口.以下协议是我们需要了解的: 网络协议的特征包括: 1.  面向消息 2.  面向连接和无线接 3.  可靠性和次序性 4. ...

  8. Python+Selenium练习篇之3-利用tag name定位元素

    前一篇文章介绍了如何通过元素的id值来定位web元素,本文介绍如何通过tag name来定位元素.个人认为,通过tag name来定位还是有很大缺陷,定位不够精确.主要是tag name有很多重复的, ...

  9. c++ primer plus 第6版 部分二 5- 8章

    ---恢复内容开始--- c++ primer plus 第6版 部分二    5-  章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...

  10. Leetcode 493.翻转对

    翻转对 给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对. 你需要返回给定数组中的重要翻转对的数量. 示例 ...