| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 
 | __inline BYTE HexVal(BYTE bt) 
{
    if(bt >= '0' && bt <= '9') return (bt - 0x30); 
    if(bt >= 'a' && bt <= 'z') return (bt - 0x57);
    if(bt >= 'A' && bt <= 'Z') return (bt - 0x37); 
    return bt; 
}
 
void __stdcall Hex2Bin(BYTE* lpIn, DWORD dwInSize, BYTE* lpOut)
{
  DWORD i = (dwInSize-1);
  do {
    lpOut[i] = (HexVal(lpIn[i*2]) << 4) | (HexVal(lpIn[i*2+1]));
  } while(i--);
}
void __stdcall Bin2Hex(BYTE* lpIn, DWORD dwInSize, BYTE* lpOut)
{
  static const BYTE HexaTable[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
                                     0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 };
  DWORD i = (dwInSize-1);
  do {
    lpOut[2*i] = HexaTable[(lpIn[i] >> 4) & 0x0F];
    lpOut[2*i+1] = HexaTable[lpIn[i] & 0x0F];
  } while(i--); 
} | 
Partager