根据银行卡号判断是哪个银行的卡,依据是银行卡号的前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;}
//获得BankName 
private 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;
}

全球银行银行卡的bin号下载地址:http://download.csdn.net/detail/u013334392/9628242

使用例子:

//621462 广发银行 cgb 理财通 借记卡
String nameOfBank = AssetsBankInfo.getNameOfBank(mContext, 621462);//获取银行卡的信息
L.e("nameOfBank=" + nameOfBank);

android根据银行卡卡号前6位获得归属银行相关推荐

  1. 根据卡号前6位判断开户银行

    参考blog: http://blog.csdn.net/menghnhhuan/article/details/7351621 可参考,但感觉还不够好用,有时间再整理

  2. 前端JS校验银行卡卡号和身份证号码(附ES6版方法)

    1.银行卡卡号校验方法. function luhnCheck(bankno) { var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一 ...

  3. 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...

    编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...

  4. Python+OpenCV 识别银行卡卡号

    Python+OpenCV 识别银行卡卡号 今天尝试一下用python+OpenCV,使用模板匹配的方式做个简单地识别银行卡卡号(大部分参考网上的,自己改了一部分,代码写的有点不太好,但是思路很清晰, ...

  5. 银行卡卡号格式规范 每隔4为一个空格

    最近涉及到一个绑定银行卡的需求,需要格式化银行卡卡号.即:每隔4为做一个空格. 一个很简单的功能,大牛请自动忽略... 做个笔记O(∩_∩)O哈! bankCardNoEditTxt.addTextC ...

  6. 基于Python的Opencv 自动识别银行卡卡号系统

    一. 摘要 此应用功能为自动识别并获取银行卡卡号,通过导入需要识别的银行卡图片,以及跟银行卡上卡号的数字相一致的数字模型,则可以成功实现识别并获取银行卡卡号的功能.如果你对此感兴趣的话,下面将会详细介 ...

  7. 根据省份证号前6位数字生成的三级联动下拉菜单

    <Script language="JavaScript"> // 定义一级数组 var D0=new Array('("北京市","11 ...

  8. 银行卡三元素检测 根据姓名+身份证号+银行卡卡号验证信息是否匹配

    银行卡检测api,根据姓名+身份证号+银行卡卡号验证信息是否匹配. 接口名称:银行卡检测api 接口平台:聚合数据 接口地址:http://v.juhe.cn/verifybankcard3/quer ...

  9. 学习Opencv+Python之银行卡卡号识别

    学习Opencv+Python之银行卡卡号识别 思路: 获取模板轮廓 获取模板中每个数字的轮廓 获取银行卡卡号轮廓 分别提取卡号中的每个数字的轮廓 对比识别 代码: # 导入工具包 from imut ...

最新文章

  1. SAP PM 初级系列15 - IW33事务代码界面里查看维修工单对应的维修通知单的几个方法
  2. 机器学习里如何确定K-Means算法的K值?
  3. 国际C语言乱码大赛(IOCCC)经典之作
  4. 什么是Unwind segues,您如何使用它们?
  5. python定时器库_Python定时器完整示例 python定时器用法举例
  6. EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?
  7. 数字孪生及其在航空航天中的应用
  8. RHEL6入门系列之三,GNU计划与Linux发行版
  9. RPLIDAR A1激光雷达学习笔记
  10. matlab中beta是什么软件,软件版本中的beta是什么意思?
  11. 微信小程序-001-抽签功能-002-新建抽签
  12. Android开发——网络请求(一)网络请求的API、授权和方法
  13. 余华:《活着》读后感
  14. 2021年度总结:这一年你过的怎么样?
  15. lisp 练习取得对象属性
  16. 第四局 借问酒家何处有?牧童遥指杏花村 下
  17. AWS解决方案架构师薪资平均159,033 美元
  18. Python基础之占位符
  19. 素数:素数判断、找素数、计算素数和、素数求和
  20. 计算机机房建设标准.doc,计算机机房建设标准.doc

热门文章

  1. react跑马灯插件react-slick使用
  2. Unity-TA 成长之路(三)URP-Universal Render Pipeline
  3. 【Android】App界面与顶部状态栏重叠遮盖问题
  4. 【化学信息学】药物靶标的主要类型和结构特征
  5. mysql bitmap index_oracle 位图索引(bitmap index)
  6. 生成不重复随机数——《超级处理器》应用
  7. Linux下的开源免费杀毒软件Clamav
  8. 猜拳小游戏(while)循环
  9. GameFramework入口
  10. python正弦波和等腰三角波_Python科学计算——任意波形拟合