身份证号码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; }
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理