strtoul()引起的刷卡异常
2024-09-03 07:08:10
else if(size==)//10个字节 10进制数
{
tempcard=strtoul((const char*)cardnum,,);//将
cardnum[]=tempcard>>&0x00ff;//最高位
cardnum[]=tempcard>>&0x00ff;
cardnum[]=tempcard>>&0x00ff;
cardnum[]=tempcard&0x00ff;
}
上述语句中,使用strtoul()函数,如果cardnum转化后的超出tempcard(int)的范围,则tempcard的值为0xFFFF FFFF ,这样就导致card[]数组的值全为0xFF,则与flash中的值一致,刷卡开门成功;
解决
(1)每次串口接收结尾添加字符串结束符
(2)若值为0xFFFF FFFF,无需与flash存储内容比较,直接认为无效数据。
最新文章
- ORA-01336: specified dictionary file cannot be opened
- silverlight 获取服务器上图片出现异常 “AG_E_NETWORK_ERROR”
- python类的特性
- [原创]推荐一款强大的.NET程序内存分析工具.NET Memory Profiler
- 快速搭建ssh(最终版)
- iPad 2升级iOS 9的过程记录
- nodejs tools
- css3实现手机菜单展开收起动画
- win10系统 Visual Studio 2013 Color Theme Editor插件 安装出错
- Spark的性能调优杂谈
- HTTP协议初步解析
- haproxy配置示例和需要考虑的问题
- HTML Table to Json
- canvas-4createPattern.html
- [GAN] Generative networks
- ubuntu解压和压缩文件
- MySQL Replication--GTID基础
- Debian静态IP地址和DNS
- VFS文件系统结构分析
- mongodb优化篇