原文连接:http://blog.csdn.net/yuanfen127/archive/2005/12/23/560633.aspx

程序有两个错误
第一
sprintf(l_tmpstr,"select * from CUPSCTL order by dc_preind");
由于dc_preind字段是CHAR(12 BYTE),因此这样的order by并不能保证卡BIN是按照位数长度排列的
第二
if ( 0 == memcmp(l_card_bin,local_cupsctl[j].dc_preind,i) )
这样处理是看短不看长,如果l_card_bin是955881,而local_cupsctl[j].dc_preind是95588111,但是由于i是l_card_bin的长度,因此仍然认为这个memcmp返回0

修改处理
一、sprintf(l_tmpstr,"select dc_preind,des,to_number(dc_preind) from CUPSCTL order by 3");
在选择的字段后面加上to_number(dc_preind)把这些文本类型转换成数值类型,再根据这个字段位置进行排序,确保按照卡BIN长度位数从少到多放入到内存数组中
二、整个循环只使用一个既可,修改如下:
    /*错误的
    for ( i = 12 ; i > 5 ; i -- )
    {
        memset(l_card_bin,' ',sizeof(l_card_bin));
        memcpy(l_card_bin,v_tcard_no,i);        /*把卡号前i位复制给l_card_bin*/ 
        for ( j=local_cupsctl_cnt; j >= 0 ; j--)/*数组中的CUPSCTL是否有此BIN*/
        {
            if ( 0 == memcmp(l_card_bin,local_cupsctl[j].dc_preind,i) )
            {
                memcmp(v_cupsctl,&local_cupsctl[j],sizeof(CUPSCTL));
                stop_flag = 1;
                break;
            }
        }

if ( 1 == stop_flag )
        {
            break;
        }
    }
    */

memset(l_card_bin,' ',sizeof(l_card_bin));
    memcpy(l_card_bin,v_tcard_no,i);          /*把卡号前i位复制给l_card_bin*/

for ( j=local_cupsctl_cnt-1; j >= 0 ; j--)/*数组中的CUPSCTL是否有此BIN*/
    {
        if ( 0 == memcmp(l_card_bin,local_cupsctl[j].dc_preind,
                             strlen(local_cupsctl[j].dc_preind)) ) /*按长的判断*/
        {
            memcpy(v_cupsctl,&local_cupsctl[j],sizeof(CUPSCTL));
            stop_flag = 1;
            break;
        }
    }

if ( 1 == stop_flag )
    {
        break;
    }

关于判断卡BIN的修正相关推荐

  1. 银行卡类型api,通过银行卡查询判断卡类型

    ‍银行卡类型api,可通过银行卡查询,可以判断卡类型. 接口名称:银行卡类型api 接口平台:api接口 接口地址:http://detectionBankCard.api.juhe.cn/bankC ...

  2. 如何根据银行卡号判断卡的真伪

    这个算法是IBM公司的彼得·卢恩(Peter Luhn)于1954年设计的一个校验和(checksum)算法,来检测在实际操作中最常见的两种错误:单个数字错误.由于两个数字写错位置而引起的大多数换位错 ...

  3. android nfc 判断卡类型,NFC读卡判断卡类型

    如题,项目中会用到NFC读取卡号,并且需要获取卡的类型. 这时候我们可以在获取nfc读卡的onNewIntent方法中拿到卡的类型 @Override protected void onNewInte ...

  4. 511遇见易语言乐玩插件置图片密码和枚举图片卡屏判断

    本节视频录制的命令较多,非常实用,有图示加密SetPicPwd,枚举图片MatchPicName,这个命令在使用FindPicEx找图扩展时,非常好用,支持通配符,强烈推荐,而IsDisplayDea ...

  5. linux循环条件,shell脚本编写 之 条件选择,条件判断,循环语句

    1 概述 编写shell脚本,一般离不开条件选择,条件判断以及循环语句.掌握这三个语法,将大大提高脚本的编写效率,使得脚本编写更加灵活,完成X相对复杂的工作 2 条件选择if语句 if语句选择执行,逐 ...

  6. 快捷支付各种绑卡鉴权方式

    1.背景 互联网金融平台账户进行开户或者支付业务时,绑卡鉴权环节是必经之路. 那么什么是绑卡鉴权?绑卡是将用户银行卡信息提供给金融平台,以后金融平台就用这个信息去银行完成支付.绑卡实际上是一个授权,让 ...

  7. 支付系统设计:绑卡、签约和身份验证(四)

    在上一篇 支付系统之银行卡支付中,挖了个坑,就是关于绑卡的坑. 在用户使用银行卡做支付之前,首先需要完成绑卡的操作.怎么实现绑卡,怎么验证用户绑的是自己的而不是隔壁老王的卡,这就是本期的重点. 为什么 ...

  8. 机房重构之权限判断登录窗体

    首先是分为七层: 实体层:Enitity 数据访问层:DAL 连接DAL的接口层:IDAL 业务逻辑处理层:BLL 连接BLL的接口处:IBLL 通过反射连接BLL,DAL,UI的抽象工厂层:Fact ...

  9. Rockchip | 使用SD卡启动或升级固件到本地存储

    1 简介 Rockchip 现将 SD 卡划分为常规 SD 卡,SD 升级卡,SD 启动卡,SD 修复卡.可以通过瑞芯微创建升级磁盘工具将镜像文件下载到 SD 卡内,制作不同的卡类型. 2 分类 2. ...

  10. sd 卡驱动在2.6内核的编写.sd/mmc/sdio kernel,sd/mmc/sdio 内核

    [转帖请注明出处:blog.csdn.net/lanmanck] sd卡驱动主要参照已有的文件即可,2410,9260都挺好.其实写驱动主要是搞清楚工作流程即可.我这里写一些心得与大家分享下,基于2. ...

最新文章

  1. 设计模式 之 建造者
  2. OpenStack虚拟机删除后停在deleting无法正常删除
  3. mysql 评论回复表设计_【数据库】评论回复表设计
  4. 沧州学计算机设计大赛,沧职两学子全国工业机器人技能大赛获奖
  5. python数据科学指南是什么_《Python数据科学指南》——导读
  6. IoT -- (二) 物联网传感器介绍
  7. java开发原则_java开发中,大家处理异常的原则是什么,是如何处理的?
  8. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:
  9. 解决Spring JdbcTemplate调用queryForObject()方法结果集为空时报异常
  10. leetcode-680-Valid Palindrome II
  11. php 高德地图创建标注,高德地图 JS API的覆盖物—编辑矢量图形
  12. Error: Could not open connection to jdbc:hive2://master:10000: java.net.ConnectException: Connection
  13. 分享8年开发经验,浅谈程序员职业规划
  14. 大数据三维可视化展示系统的应用分析
  15. ConvertUtils
  16. 牛逼!StarRocks 2.0正式发布,新一年,新启航,新极速!
  17. 北京工作居住证续签收紧_收紧网站的安全带:HTTP安全标题
  18. 移动网上大学itch连接mysql_中国移动网上大学登录(移动网上大学客户端)
  19. 条码打印软件如何连接SQL Server数据库制作条形码
  20. 《97 Things Every Software Architect Should Know》读书笔记

热门文章

  1. ArcGIS与地理加权回归GWR【一】
  2. 读书笔记《推荐系统实践》- 个性化推荐系统总结
  3. 烟台市建筑物矢量数据(Shp格式+带高度)
  4. 轨道交通重要组成部分网络时钟系统(子母钟系统)
  5. Proteus8.6软件安装教程
  6. WPS2019政府版本
  7. yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  8. 计算机二级c语言考试的步骤,计算机二级C语言考试技巧
  9. [量子计算]量子计算的发展史与中国现在的量子计算整体水平
  10. xendesktop更新计算机,XenApp / XenDesktop 7.6 初体验二 配置计算机目录和交付组