char int2char(int nData) { switch(nData) { case 0: return '0'; case 1: return '1'; case 2: return '2'; case 3: return '3'; case 4: return '4'; case 5: return '5'; case 6: return '6'; case 7: return '7'; case 8: return '8'; case 9: return '9'; case 10: return 'A'; case 11: return 'B'; case 12: return 'C'; case 13: return 'D'; case 14: return 'E'; case 15: return 'F'; } } char char2int(char c) { if(c>='A' && c<='Z') return c - 'A' + 10; else if(c>='a' && c<='z') return c - 'a' + 10; else return c - '0'; } unsigned char Hex2Char(char c1,char c2) { return (char2int(c1)*16 + char2int(c2)); } bool Hexs2Chars(char *szData,int nLen,BYTE *btData) { if(nLen%2 != 0) return false; for(int i=0;i<nLen/2;i++) { btData[i] = Hex2Char(szData[i*2],szData[i*2+1]); } return true; } bool Chars2Hexs(BYTE *btDecBuf,int nLen,char *szData) { for(int i=0;i<nLen;i++ ) { szData[i*2] = int2char(((int )btDecBuf[i])/16); szData[i*2+1] = int2char(((int )btDecBuf[i])%16); } return true; }