strtoul()引發的刷卡異常

    else if(size==10)//10個字節 10進制數
    {
        tempcard=strtoul((const char*)cardnum,0,10);//
        cardnum[0]=tempcard>>24&0x00ff;//最高位
        cardnum[1]=tempcard>>16&0x00ff;
        cardnum[2]=tempcard>>8&0x00ff;
        cardnum[3]=tempcard&0x00ff;
    }

上述語句中,使用strtoul()函數,若是cardnum轉化後的超出tempcard(int)的範圍,則tempcard的值爲0xFFFF FFFF ,這樣就致使card[]數組的值全爲0xFF,則與flash中的值一致,刷卡開門成功;數組

解決函數

(1)每次串口接收結尾添加字符串結束符spa

(2)若值爲0xFFFF FFFF,無需與flash存儲內容比較,直接認爲無效數據。code

相關文章
相關標籤/搜索