Telnet代码
酌情修改menu.ini comm_list.c
在xyz.c中加入下面的函数重新编译即可
int IDCard()
{
char buf[20];
int i=0,j=0;
int a[17]={2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7};
char ch;
clear();
getdata(12,0,"请输入要转换的15位身份证号: ",buf,16,DOECHO,YEA);
if(buf[0]=='\0') { pressanykey();return; }
for(i=0;i<15;i++)
if(buf[i]=='\0')
{ prints("\n 身份证号码不完整!\n");break;pressanykey();return;}
else if(buf[i]<'0'||buf[i]>'9'){
prints("\n 身份证号码不正确 ! \n");
break;
pressanykey();
return;
}
for(i=16;i>=6;i--) buf[i+2]=buf[i];
buf[6]='1';
buf[7]='9';
for(i=0;i<17;i++){
j+=(buf[i]-'0')*a[16-i];
}
j%=11;
switch(j){
case 0:
ch='1';
break;
case 1:
ch='0';
break;
case 2:
ch='X';
break;
default:
ch=12-j+'0';
break;
}
prints("\n转换后的18位号码为:%s%c\n",buf,ch);
pressanykey();
}
WWW代码
仅一个页面内用javascript即可实现
<head>
<script>
//author mok@smth
function IDCode15to18(){
var i;
num=0;
ID15=document.testform.ID15.value;
ID18=ID15.substring(0,6) + '19' + ID15.substring(6,15);
//前面插入19得到前17位号码
for(i=16;i>=0;i--){
num+=((Math.pow(2,i+1)%11)*ID18.substring(16-i,16-i+1));
//pow(2,i+1)是2的i+1次幂
}
num%=11;
if (num==0) ID18+="1";
else if(num==1) ID18+="0";
else if(num==2) ID18+="X";
else ID18+=(12-num);
document.testform.ID18.value=ID18;
return false;
}
</script>
</head>
<body>
身份证号码转换
<form method=post name=testform onsubmit="return IDCode15to18();">
15位号码 <input type=text name=ID15 value=''><br>
18位号码 <input type=text name=ID18 value='' readonly=yes><br>
<input type=submit value= "转换 " >
</form >
</body>
--
修改:mOk FROM 202.198.169.8
FROM 202.198.169.8