银行卡号是怎么生成和校验的(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电脑显示未插入扬声器怎么办
  • 热门搜索
    安徽旅游景点 呼伦贝尔旅游 西双版纳旅游 旅游管理专业就业前景 赤水旅游 51旅游 青城山旅游攻略 江西旅游景点大全 张家界旅游 旅游管理