身份证15To18 的算法(vb,c#)

 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];

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值