bcdncmp函数的实现

来源:互联网 发布:企业版支付宝申请淘宝 编辑:程序博客网 时间:2024/05/20 20:48
#include <stdio.h>typedef unsigned char uint8;uint8 MMICL_BCDncmp(const uint8* src, const uint8* dst,const uint8 n,int isbig){uint8 srcHigh = 0,srcLow  = 0,dstHigh = 0,dstLow = 0,iTemp = 0;for(iTemp = 0;iTemp < (n+1)/2 - 1;iTemp ++){if(*dst == *src && *dst != 0xff && *src != 0xff)src ++,dst ++;elsebreak;}if (*src == 0xff) // src结束return (*dst != 0xff) ? 2 : 0; // dst没结束,则大,否则相等if (*dst == 0xff) // src没结束,dst没结束return 1; // src大if (*dst == *src)return 0;srcHigh = ((*src) >> 4) & 0x0f;srcLow = (*src) & 0x0f;dstHigh = ((*dst) >> 4) & 0x0f;dstLow = (*dst) & 0x0f;if (isbig) // 大端{if (srcHigh != dstHigh) // 先比较高地址return (srcHigh > dstHigh) ? 1 : 2;else // 高地址相同,比低地址{if (srcLow == 0x0f)return 2;if (dstLow == 0x0f)return 1;return (srcLow > dstLow) ? 1 : 2;}}else{if (srcLow != dstLow)return (srcLow > dstLow) ? 1 : 2;else{if (srcHigh == 0x0f)return 2;if (srcHigh == 0x0f)return 1;return (srcHigh > dstHigh) ? 1 : 2;}}}

原创粉丝点击