android根据银行卡卡号前6位获得归属银行
根据银行卡号判断是哪个银行的卡,依据是银行卡号的前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位获得归属银行相关推荐
- 根据卡号前6位判断开户银行
参考blog: http://blog.csdn.net/menghnhhuan/article/details/7351621 可参考,但感觉还不够好用,有时间再整理
- 前端JS校验银行卡卡号和身份证号码(附ES6版方法)
1.银行卡卡号校验方法. function luhnCheck(bankno) { var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一 ...
- 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...
编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...
- Python+OpenCV 识别银行卡卡号
Python+OpenCV 识别银行卡卡号 今天尝试一下用python+OpenCV,使用模板匹配的方式做个简单地识别银行卡卡号(大部分参考网上的,自己改了一部分,代码写的有点不太好,但是思路很清晰, ...
- 银行卡卡号格式规范 每隔4为一个空格
最近涉及到一个绑定银行卡的需求,需要格式化银行卡卡号.即:每隔4为做一个空格. 一个很简单的功能,大牛请自动忽略... 做个笔记O(∩_∩)O哈! bankCardNoEditTxt.addTextC ...
- 基于Python的Opencv 自动识别银行卡卡号系统
一. 摘要 此应用功能为自动识别并获取银行卡卡号,通过导入需要识别的银行卡图片,以及跟银行卡上卡号的数字相一致的数字模型,则可以成功实现识别并获取银行卡卡号的功能.如果你对此感兴趣的话,下面将会详细介 ...
- 根据省份证号前6位数字生成的三级联动下拉菜单
<Script language="JavaScript"> // 定义一级数组 var D0=new Array('("北京市","11 ...
- 银行卡三元素检测 根据姓名+身份证号+银行卡卡号验证信息是否匹配
银行卡检测api,根据姓名+身份证号+银行卡卡号验证信息是否匹配. 接口名称:银行卡检测api 接口平台:聚合数据 接口地址:http://v.juhe.cn/verifybankcard3/quer ...
- 学习Opencv+Python之银行卡卡号识别
学习Opencv+Python之银行卡卡号识别 思路: 获取模板轮廓 获取模板中每个数字的轮廓 获取银行卡卡号轮廓 分别提取卡号中的每个数字的轮廓 对比识别 代码: # 导入工具包 from imut ...
最新文章
- SAP PM 初级系列15 - IW33事务代码界面里查看维修工单对应的维修通知单的几个方法
- 机器学习里如何确定K-Means算法的K值?
- 国际C语言乱码大赛(IOCCC)经典之作
- 什么是Unwind segues,您如何使用它们?
- python定时器库_Python定时器完整示例 python定时器用法举例
- EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?
- 数字孪生及其在航空航天中的应用
- RHEL6入门系列之三,GNU计划与Linux发行版
- RPLIDAR A1激光雷达学习笔记
- matlab中beta是什么软件,软件版本中的beta是什么意思?
- 微信小程序-001-抽签功能-002-新建抽签
- Android开发——网络请求(一)网络请求的API、授权和方法
- 余华:《活着》读后感
- 2021年度总结:这一年你过的怎么样?
- lisp 练习取得对象属性
- 第四局 借问酒家何处有?牧童遥指杏花村 下
- AWS解决方案架构师薪资平均159,033 美元
- Python基础之占位符
- 素数:素数判断、找素数、计算素数和、素数求和
- 计算机机房建设标准.doc,计算机机房建设标准.doc