银行卡号是怎么生成和校验的(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电脑显示未插入扬声器怎么办
  • 热门搜索
    论文引用怎么标注 李云龙怎么死的 角质层薄怎么办 崴脚了怎么办 睡眠质量不好怎么办 胃疼怎么快速缓解 虞姬怎么死的 和彩云怎么用 水星家纺怎么样 平安银行信用卡怎么样