1 2 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