| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 549 人关注过本帖
标题:银行卡号是否正确的校验方法之一(根据最后一位是否符合Luhn算法)
只看楼主 加入收藏
nbwww
Rank: 8Rank: 8
等 级:贵宾
威 望:11
帖 子:324
专家分:759
注 册:2021-1-9
结帖率:87.5%
收藏
已结贴  问题点数: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
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9828
专家分:27145
注 册:2012-2-5
收藏(1)
得分: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
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11807
专家分:43421
注 册:2006-5-13
收藏
得分:0 
回复 楼主 nbwww
高手绕行了您如何得到提高?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2023-03-07 11:26
快速回复:银行卡号是否正确的校验方法之一(根据最后一位是否符合Luhn算法)
数据加载中...
 
   



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

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