android根据银行卡卡号前6位获得归属银行
来源:互联网 发布:算法时间复杂性分析 编辑:程序博客网 时间:2024/05/16 19:31
根据银行卡号判断是哪个银行的卡,依据是银行卡号的前6位数,称之为bin号。
我们把bin号转化为长整形,再把各个银行卡的bin号做成有序表。通过二分查找的方法,找到bin号在有序表的位置,然后读出银行卡的信息。
我将有序数据封装在了txt文件中,里面是全球银行银行卡的bin号,大家可以直接放入assets目录下即可。数据超级全面,找了老久,分享给大家使用,下面就贴上java实现类:
import android.content.Context;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import core.base.log.L;/** * Created by AnmiLin on 2016/9/10. * 根据银行卡号判断是哪个银行的卡,依据是银行卡号的前6位数,称之为bin号。 * 我们把bin号转化为长整形,再把各个银行卡的bin号做成有序表。通过二分查找的方法,找到bin号在有序表的位置,然后读出银行卡的信息。 */public class AssetsBankInfo { //该方法用于打开assets中的binNum文档资源,获得里面的binNum数据 private static String openBinNum(Context context) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); String str = null; try { InputStream is = context.getResources().getAssets().open("binNum.txt"); byte[] bytes = new byte[1024]; int length = 0; while ((length = is.read(bytes)) != -1) { outputStream.write(bytes, 0, length); } is.close(); outputStream.close(); str = outputStream.toString(); } catch (IOException e) { e.printStackTrace(); } return str; } //获得Bank card的前缀 private static List<Long> getBinNum(Context context) { String binNum = openBinNum(context); String[] binArr = binNum.split(","); List<Long> lon = new ArrayList<>(); for (int i = 0; i < binArr.length; i++) { if (i % 2 == 0) lon.add(Long.parseLong(binArr[i])); } return lon; }全球银行银行卡的bin号下载地址:http://download.csdn.net/detail/u013334392/9628242//获得BankNameprivate static List<String> getBinName(Context context) { String binNum = openBinNum(context); String[] binArr = binNum.split(","); List<String> list = new ArrayList<>(); for (int i = 0; i < binArr.length; i++) { if (i % 2 != 0) list.add(binArr[i]); } return list; }
//通过输入的卡号获得银行卡信息 public static String getNameOfBank(Context context, long binNum) { Log.e("sangfei.code", "bankBin: " + binNum); int index = 0; index = binarySearch(getBinNum(context), binNum); if (index == -1) { return "磁条卡卡号:\n"; } return getBinName(context).get(index) + ":\n"; }//数量有上千条,利用二分查找算法来进行快速查找法public static int binarySearch(List<Long> srcArray, long des){int low = 0; int high = srcArray.size()-1; while(low <= high) { int middle = (low + high)/2; if(des == srcArray.get(middle)) { return middle; } else if(des < srcArray.get(middle)) { high = middle - 1; } else { low = middle + 1; } } return -1; }}
使用例子:
//621462 广发银行 cgb 理财通 借记卡String nameOfBank = AssetsBankInfo.getNameOfBank(mContext, 621462);//获取银行卡的信息L.e("nameOfBank=" + nameOfBank);
1 0
- android根据银行卡卡号前6位获得归属银行
- 自动格式化银行卡号的EditText,每四位增加一个空格,并根据银行卡号判断该银行卡归属的银行及卡别
- android根据银行卡卡号判断银行
- android根据银行卡卡号判断银行
- android根据银行卡卡号判断银行
- android根据银行卡卡号判断银行
- Android 根据银行卡号查询银行名称
- 根据卡号前6位判断开户银行
- 如何通过银行卡号 判断归属银行
- Java Android 根据银行卡号判断银行名称
- 根据银行卡号码获取银行卡归属行以及logo图标
- 根据银行卡账号获取所属银行php
- 根据银行卡账号获取所属银行php
- 根据银行卡号判断是哪个银行
- iOS-根据银行卡号判断银行名称
- iOS根据银行卡号识别银行
- iOS 根据银行卡号判断银行名称
- C#:根据银行卡卡号判断银行名称
- sql join、group by原理
- ExtJs5+Spring.Net+MVC项目搭建笔记--整体框架构建(1)
- 设计模式之命令模式
- 在IIS7.0中出现检索COM类工厂中CLSID为{}解决方案
- SpringMVC学习系列(4) 之 数据绑定-1
- android根据银行卡卡号前6位获得归属银行
- SVN error: Server SSL certificate rejected
- php中的字符串可以当做数组调用
- 正则表达式学习(三)转义和反义
- Glide踩坑
- SpringMVC学习系列(5) 之 数据绑定-2
- Maven3.0环境变量设置与安装时的报错处理方法
- cakephp recursive -1,0,1,2 速查
- Android-使用JitPack快速生成GitHub项目依赖地址