VB:
'*************************************************************************
'**FUNCTION :strID_Card
'**INPUT :strOldID(String) -OLDid
'**OUTPUT :(String) -NEWid
'**DESCRIPTION :ID_CARD 15 --->18
'**GOBLEVAR :
'**CREATENAME :YONGJUN-ZOU
'**CREATEDATE :2007-12-10 16:38:18
'**UPDATENAME :
'**UPDATEDATE :
'**VERSION :V1.0.0
'*************************************************************************
Public Function strID_Card(strOldID As String) As String
Dim vntA As Variant 'yanzheng
Dim vntB As Variant 'quan
Dim i As Integer 'for loop
Dim strTemp As String 'temp string
Dim intSum As Integer 'result
vntA = Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2") '//yanzheng
vntB = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1) '//quan
strTemp = Mid$(strOldID, 1, 6) & "19" & Mid$(strOldID, 7) 'frist 17 bit of IDcard
For i = 0 To Len(strTemp) - 1
intSum = intSum + Mid$(strTemp, i + 1, 1) * vntB(i)
Next
intSum = intSum Mod 11
strID_Card = strTemp & vntA(intSum)
End Function
c#
static string sfzhshu(string sf)
{
string[] strJiaoYan = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
int[] intQuan = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1};
string strTemp;
int intsum=0;
strTemp = sf.Substring(0, 6) + "19" + sf.Substring(6);
for (short i = 0; i < strTemp.Length; i++)
{
try
{
intsum = intsum + int.Parse(strTemp.Substring(i, 1))* intQuan[i];
}
catch
{
Console.WriteLine("Err happen");
return ("");
}
}
intsum = intsum % 11;
return strTemp + strJiaoYan[intsum];
}