有一字符数组array[8]="ff0305dc",数组中的字符为16进制数,怎样从数组中取出ff,03,05,dc,并对16进制数进行异或运算如:ff^03^05^dc。最好有源代码,求解...

解决方案 »

  1.   

    如果不定长数据用循环  LPCTSTR ascValue = _T("ff0305dc");  int iLen = _tcslen(ascValue)/2;
      BYTE *pByteVal = new BYTE[iLen];
      BYTE xorValue = 0;
      for(int i=0; i<iLen; i++)
      {
        #define TXT2BIN(x) (((x)>=_T('0') && (x)<=_T('9'))? ((x)-_T('0')): \
          (((x)>=_T('A') && (x)<=_T('F'))? ((x)-_T('A')+10) : ((x)-_T('a')+10)))      BYTE bVal = (TXT2BIN(ascValue[i*2]) <<4) | TXT2BIN(ascValue[i*2+1]) ;
        pByteVal[i] = bVal;
        xorValue ^= bVal;
      }
      //……
      delete []pByteVal;
    如果是定长数据  LPCTSTR ascValue = _T("ff0305dc");
      LONG lValue = (ULONG)_tcstoul(ascValue, NULL, 16);
      BYTE xorVal = HIBYTE(HIWORD(lValue));
      xorVal ^= LOBYTE(HIWORD(lValue));
      xorVal ^= HIBYTE(LOWORD(lValue));
      xorVal ^= LOBYTE(LOWORD(lValue));