15身份证号码转18位算法,用java 程序怎样实现即java程序源代码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15身份证号码转18位算法,用java 程序怎样实现即java程序源代码?相关的知识,希望对你有一定的参考价值。
参考技术A import java.text.DateFormat;import java.text.NumberFormat;
import java.util.*;
import java.io.ByteArrayInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
public class COMUT
public COMUT()
/**
*
* 修补15位居民身份证号码为18位
*
* @param personIDCode
*
* @return
*/
public static String fixPersonIDCode(String personIDCode)
String retIDCode = "";
if (personIDCode == null || personIDCode.trim().length() != 15)
return personIDCode;
String id17 = personIDCode.substring(0, 6) + "19"
+ personIDCode.substring(6, 15); // 15为身份证补\'19\'
// char[] code =
// \'1\',\'0\',\'X\',\'9\',\'8\',\'7\',\'6\',\'5\',\'4\',\'3\',\'2\';
// //11个
char[] code = '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' ; // 11个
int[] factor = 0, 2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7 ; // 18个;
int[] idcd = new int[18];
int i;
int j;
int sum;
int remainder;
for (i = 1; i < 18; i++)
j = 17 - i;
idcd[i] = Integer.parseInt(id17.substring(j, j + 1));
sum = 0;
for (i = 1; i < 18; i++)
sum = sum + idcd[i] * factor[i];
remainder = sum % 11;
String lastCheckBit = String.valueOf(code[remainder]);
return id17 + lastCheckBit;
/**
*
* 判断是否是有效的18位或15位居民身份证号码
*
* @param identityId
* :18位或15位居民身份证号码
*
* @return:true: 有效的18位或15位居民身份证号码
*/
public static boolean isIdentityId(String identityId)
if (isEmpty(identityId))
return false;
try
if (identityId.length() == 18)
String identityId15 = identityId.substring(0, 6)
+ identityId.substring(8, 17);
// System.out.println("the identityId15 is : "+identityId15);
if (fixPersonIDCode(identityId15).equalsIgnoreCase(identityId))
return true;
else
return false;
else if (identityId.length() == 15)
try
Long.parseLong(identityId);
return true;
catch (Exception ex)
return false;
else
return false;
catch (Exception ex)
return false;
/**
*
* 判断是否为空串""
*/
public static boolean isEmpty(String sValue)
if (sValue == null)
return true;
return sValue.trim().equals("") ? true : false;
public static void main(String[] args)
try
System.out.println(fixPersonIDCode("650103760113073"));// 身份证15位转18位
System.out.println(isIdentityId("650103760113073")); // 否是为有效的15位身份证号
catch (Exception e)
e.printStackTrace();
本回答被提问者采纳
Linux进程5——实模式和保护模式
早期的Inter芯片只支持1MB内存,采用实模式,采用16bit地址。后来随着技术进步,出现可以访问更多内存的
保护模式芯片,采用32bit地址。为了保持对前面芯片的兼容,Inter支持这两种模式。当芯片启动时,默认处于实模式,
然后OS控制进入保护模式。
实模式和保护模式的最大区别:
实模式下,程序地址为真实的物理地址,可以访问任意地址空间,这样不同进程可能访问到其它进程程序,造成
严重错误。
保护模式下,程序地址为虚拟地址,然后由OS系统管理内存访问权限,这样每个进程只能访问分配给自己的物理
内存空间,保证了程序的安全性。例如Linux系统地址访问采用分页机制,在加载程序时,由OS分配的进程可以访问
的物理页空间,并设置了页目录项和页表项,才能保证程序正常运行。这样程序运行时地址间接地由OS进行管理,防止
进程之间互相影响,全部由OS稳定性保证。
以上是关于15身份证号码转18位算法,用java 程序怎样实现即java程序源代码?的主要内容,如果未能解决你的问题,请参考以下文章