#include "common.h" #include "ql_type.h" unsigned long htoi(char s[]) { int i = 0; unsigned long long n = 0; if (s[0] == '0' && (s[1]=='x' || s[1]=='X')) i = 2; else i = 0; for (; (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'z') || (s[i] >='A' && s[i] <= 'Z');++i){ if (tolower(s[i]) > '9') n = 16 * n + (10 + tolower(s[i]) - 'a'); else n = 16 * n + (tolower(s[i]) - '0'); } return n; } int GetParaFromStr(char *Str,char *Para,char *Value){ int ValueLen=0,ParaLen=0; char ParaTemp[22]; char *p; char d; int i=0; if(0==*Str || 0==*Para)return 0; while(0!=(d=*Para) && ParaLen<20){ ParaTemp[i++]=d; if(d=='=' || d==';')return 0; Para++; ParaLen++; } ParaTemp[ParaLen++]='='; ParaTemp[ParaLen]=0; p=strstr(Str,ParaTemp); p+=ParaLen; //-- while(*p>0x20 && ';'!=*p && ValueLen<=80){ *Value=*p; p++; Value++; ValueLen++; } *Value=0; return ValueLen; } char msgCmp(char *msg, char *target){ char *p1=target, *p2=msg; while(*p1 != 0){ if(*p1 != *p2) return 0; p1++;p2++; } return 1; } // '56'->0X56 unsigned char charStrToHex(char d1, char d2){ unsigned char p1=d1; unsigned char p2=d2; if(p1>='0' && p1 <='9') p1 -= 0x30; else if(p1>='a' && p1 <='f') p1 -= 0x57; else if(p1>='A' && p1 <='F') p1 -= 0x37; else return 0; p1<<=4;p1&=0xF0; if(p2>='0' && p2 <='9') p2 -= 0x30; else if(p2>='a' && p2 <='f') p2 -= 0x57; else if(p2>='A' && p2 <='F') p2 -= 0x37; else return 0; return (p1|p2); } /* restoreDataFormatByHex "313233"=>{0x31,0x32,0x33} */ unsigned char restoreDataFormatByHex(unsigned char *src, unsigned short len) { unsigned short i,j,k; unsigned char temp[2]; if(0==src) return 1; j=0; for(i=0;i='0' && temp[k]<='9') temp[k] -= 0x30; else if(temp[k]>='a' && temp[k]<='f') temp[k] -= 0x57; else if(temp[k]>='A' && temp[k]<='F') temp[k] -= 0x37; else return 2; } temp[0] <<= 4; temp[0] &= 0xF0; src[j++] = temp[0] | temp[1]; } return 0; } /* 从长度为len的src缓存中查找第index个target,并返回下一个字节的索引 src:缓存 len:缓存长度 target:要匹配的字节内容 index:第几个target, 1,2,3,4..... return: < 0 失败,else, target后面一个字节的索引 */ int findByteFromStr(unsigned char *src, int len,unsigned char target,unsigned char index){ int i; unsigned char num=0; for(i=0;i=0)&&(aHex<=9)) aHex += 0x30; else if((aHex>=10)&&(aHex<=15))//A-F //aHex += 0x37; aHex += 0x57; else aHex = 0xff; return aHex; } void AscStrTurnHexStr(char *AscStr, char *HexStr) { char *pAscStr=AscStr; unsigned char d,h,l; while(0!=(d=(unsigned char)*pAscStr++)){ l=d&0x0f; h=d>>4; *HexStr++=AscToHex(h); *HexStr++=AscToHex(l); } *HexStr=0; } void LwEndingToBiEndingStr(char *data, int len){ char tt[2]; int i; for(i=0;iyear=poc_clock.year; myclock->month=poc_clock.month; myclock->day=poc_clock.day; myclock->hour=poc_clock.hour; myclock->min=poc_clock.min; myclock->sec=poc_clock.sec; } void ohpocGetClock(MY_CLOCK *myclock){ //getMyClock(myclock); current_zone_time(myclock); };