日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解

發布時間:2024/9/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現行 16 位銀聯卡現行卡號開頭 6 位是 622126~622925 之間的,7 到 15 位是銀行自定義的, 可能是發卡分行,發卡網點,發卡序號,第 16 位是校驗碼。

16 位卡號校驗位采用 Luhm 校驗方法計算:

1、將未帶校驗位的 15 位卡號從右依次編號 1 到 15,位于奇數位號上的數字乘以 2

2、將奇位乘積的個十位全部相加,再加上所有偶數位上的數字

3、將加法和加上校驗位能被 10 整除。

public class CheckIdCard {

/**

* 校驗銀行卡卡號

*

* @param cardId

* @return

*/

public static boolean checkBankCard(String cardId) {

char bit = getBankCardCheckCode(cardId

.substring(0, cardId.length() - 1));

if (bit == 'N') {

return false;

}

return cardId.charAt(cardId.length() - 1) == bit;

}

/**

* 從不含校驗位的銀行卡卡號采用 Luhm 校驗算法獲得校驗位

*

* @param nonCheckCodeCardId

* @return

*/

public static char getBankCardCheckCode(String nonCheckCodeCardId) {

if (nonCheckCodeCardId == null

|| nonCheckCodeCardId.trim().length() == 0

|| !nonCheckCodeCardId.matches("\\d+")) {

// 如果傳的不是數據返回N

return 'N';

}

char[] chs = nonCheckCodeCardId.trim().toCharArray();

int luhmSum = 0;

for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {

int k = chs[i] - '0';

if (j % 2 == 0) {

k *= 2;

k = k / 10 + k % 10;

}

luhmSum += k;

}

return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');

}

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持編程圈。

總結

以上是生活随笔為你收集整理的android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。