标题:银行卡号是否正确的校验方法之一(根据最后一位是否符合Luhn算法)
只看楼主
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
结帖率:88.89%
已结贴  问题点数:20 回复次数:2 
银行卡号是否正确的校验方法之一(根据最后一位是否符合Luhn算法)
写得不太规范,高手请绕行
程序代码:
CLEAR 
no1='6222888800010008'   &&卡号
len2=INT(LEN(no1)/2)
IF LEN(no1)#16 
   =MESSAGEBOX('卡号长度错误')
ENDIF   
endwei=0 
FOR ii=1 TO len2  &&偶数*2  结果大于10   -9或者十位数+个位数
   js=ALLTRIM(STR(VAL(LEFT(RIGHT(no1,ii*2),1))*2))
   IF VAL(js)>=10
      endwei=endwei+VAL(LEFT(js,1))+VAL(RIGHT(js,1))
   ELSE    
      endwei=endwei+VAL(js)
   ENDIF    
ENDFOR 
FOR ii=1 TO len2   &&奇数位直接相加
   js=LEFT(right(no1,ii*2-1),1)          
      endwei=endwei+VAL(js) 
ENDFOR
   ?endwei
IF MOD(endwei,10)=0    &&除10 整数  校验通过
  ?no1+'  **校验正确'
ELSE 
  ?no1+'  **校验错误******'
ENDIF 
搜索更多相关主题的帖子: IF LEFT 校验 是否 js 
2023-03-06 21:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
******************************************************************************
* LUHN规则说明:
* 如何判断一个银行卡号是否是真实有效的,还是胡乱编造的呢。
* 银联卡号Luhn校验规则:16位银行卡号(19位通用)
* 1.将未带校验位的 15(或18)位卡号从右依次编号 1 到 15(18),位于奇数位号上的数字乘以 2
* 2.将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
* 3.将加法和加上校验位能被 10 整除
******************************************************************************
程序代码:
CLEAR 
lckh = "6222888800010008"
IF NOT BETWEEN(LEN(lckh), 16, 19)
    MESSAGEBOX("银行卡号长度必须为16-19位")
    RETURN 
ENDIF
* 其它容错就不写了
* [color=#800000]16-19位银行卡号检验[/color]
STORE 0 TO ln1, ln2
FOR ln = LEN(lckh) - 1 TO 1 STEP - 1
    lc = SUBSTR(lckh, ln, 1)
    ln3 = LEN(lckh) - ln
    IF MOD(ln3, 2) = 1
        ln1 = ln1 + INT((VAL(lc)*2)/10) + MOD((VAL(lc)*2),10)
    ELSE 
        ln2 = ln2 + VAL(lc)
    ENDIF 
ENDFOR
lnSum = ln1 + ln2 + VAL(RIGHT(lckh, 1))
IF MOD(lnSum, 10) = 0
    MESSAGEBOX("====银行卡号校验正确====")
ELSE
    MESSAGEBOX("****银行卡号校验不正确****")
ENDIF 

坚守VFP最后的阵地
2023-03-06 23:57
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
回复 楼主 nbwww
高手绕行了您如何得到提高?

活到老,学到老! http://www. E-mail:hu-jj@
2023-03-07 11:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511470-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.106382 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved