银行卡号是怎么生成和校验的(LUHM校验算法)。

 时间:2026-02-14 01:56:19

1、除去校验位后,从右趴三至左,将卡号按位编码,从0开始。

2、将偶数位×2,得到的结果腊绵按位相加,比如偶数为6,×2=12,则将1和2相加=3;奇数位则直接参与相加;

3、重复步骤2得到总和,该总和加上校验位应涛墨付能被10整除,否则校验位不正确。

1、BOOL LuhmCheck( LPCSTR lpszCard, BOOL bCheck = TRUE )  

{  

    int nLength = strlen( lpszCard );  

    if( nLength != 16 && nLength != 19 )  

        return FALSE;  

  

    if( !bCheck )  

        return TRUE;  

  

    int nCheck = ( lpszCard[ nLength - 1 ] - '0' );  

    int sum = 0;  

    nLength -= 2;  

    for( int i = 0; i <= nLength; ++ i )  

    {  

        int j = nLength - i;  

        int w = lpszCard[ j ] - '0';  

        if( i % 2 == 0 )  

        {  

            int n = w * 2;  

            if( n > 9 )  

            {  

                sum += ( n % 10 );  

                sum += ( n / 10 );  

            }  

            else  

                sum += n;  

        }  

        else  

        {  

            sum += w;  

        }  

    }  

    if(( sum + nCheck ) % 10 == 0 )  

        return TRUE;  

    else  

        return FALSE;  

}  

  • 360安全卫士如何修复电脑蓝屏
  • win10电脑显示未插入扬声器怎么解决
  • 电脑显示扬声器未接入的设置方法
  • Windows7提示未插入扬声器或耳机怎么解决?
  • win10电脑显示未插入扬声器怎么办
  • 热门搜索
    十一云南旅游 同程旅游网站官网 绩溪旅游 五大连池旅游 佳木斯旅游 常熟旅游网 中国旅游信息网 网络旅游 湖北恩施旅游攻略 兴宁旅游