| |
1 |
|
#include "stdafx.h" |
| |
2 |
|
#include "conv.h" |
| |
3 |
|
|
| |
4 |
|
TCHAR __hex[16] = { _T('0'), _T('1'), _T('2'), _T('3'), _T('4'), _T('5'), _T('6'), _T('7'), _T('8'), _T('9'), _T('a'), _T('b'), _T('c'), _T('d'), _T('e'), _T('f'), }; |
| |
5 |
|
|
| |
6 |
|
void Bin2Hex(const BYTE* pbyIn, size_t tInCount, TCHAR *pszOut) |
| |
7 |
|
{ |
| |
8 |
|
for (size_t i=0;i<tInCount;i++) |
| |
9 |
|
{ |
| |
10 |
|
*pszOut++=__hex[(pbyIn[i] >> 4) & 0x0f]; |
| |
11 |
|
*pszOut++=__hex[pbyIn[i] & 0x0f]; |
| |
12 |
|
} |
| |
13 |
|
} |
| |
14 |
|
|
| |
15 |
|
bool Hex2Bin(PCTSTR pszIn, size_t tInCount, BYTE* pbyOut) |
| |
16 |
|
{ |
| |
17 |
|
|
| |
18 |
|
if (tInCount == -1) |
| |
19 |
|
tInCount=_tcslen(pszIn); |
| |
20 |
|
|
| |
21 |
|
|
| |
22 |
|
tInCount &= ~((size_t)1); |
| |
23 |
|
BYTE by; |
| |
24 |
|
for (size_t i=0;i<tInCount;i+=2) |
| |
25 |
|
{ |
| |
26 |
|
|
| |
27 |
|
if (*pszIn >= '0' && *pszIn <= '9') |
| |
28 |
|
by=(*pszIn - '0') << 4; |
| |
29 |
|
else if (*pszIn >= 'a' && *pszIn <= 'f') |
| |
30 |
|
by=(*pszIn - 'a' + 10) << 4; |
| |
31 |
|
else if (*pszIn >= 'A' && *pszIn <= 'F') |
| |
32 |
|
by=(*pszIn - 'A' + 10) << 4; |
| |
33 |
|
else |
| |
34 |
|
return false; |
| |
35 |
|
|
| |
36 |
|
|
| |
37 |
|
*pszIn++; |
| |
38 |
|
if (*pszIn >= '0' && *pszIn <= '9') |
| |
39 |
|
by|=(*pszIn - '0'); |
| |
40 |
|
else if (*pszIn >= 'a' && *pszIn <= 'f') |
| |
41 |
|
by|=(*pszIn - 'a' + 10); |
| |
42 |
|
else if (*pszIn >= 'A' && *pszIn <= 'F') |
| |
43 |
|
by|=(*pszIn - 'A' + 10); |
| |
44 |
|
else |
| |
45 |
|
return false; |
| |
46 |
|
|
| |
47 |
|
*pszIn++; |
| |
48 |
|
*pbyOut++=by; |
| |
49 |
|
} |
| |
50 |
|
|
| |
51 |
|
return true; |
| |
52 |
|
} |