int 로 사용하려면 HexToInt 의 매개변수로 char* 형태의 16진 문자열을 넣어주고 반환 값을 이용한다. 연산 용이라면 HexToBin 을 이용하여 배열에 값을 받아서 처리하면 된다.
// 16진 char 를 int 로 변환 int Convert(char c) { if ('0' <= c && c <= '9') return c - '0'; return toupper(c) - 'A' + 10; } // 16진 char 가 바른 값인지 판단 int IsHex(char c) { return ('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'); } // Delphi 의 HexToBin 의 C code conversion int HexToBin(char *Text, char *Buffer, int BufSize) { int i = BufSize; while (i > 0) {
if (IsHex(Text[0]) == false || IsHex(Text[1]) == false) break; Buffer[0] = char((Convert(Text[0]) << 4) + Convert(Text[1])); Buffer++; Text += 2; i--; } return BufSize - i; } // HexToBin 에 의해 얻어진 값을 int 로 변환 int HexToInt(char *Buffer, int BufSize) { int Result = 0; for (int a = BufSize, i = 0; a--; i++) Result = (Result << 8) + (int)(Buffer[i] & 0xFF); return Result; } // HexToBin -> HexToInt 통합 호출 int HexToInt(char *Text) { char szBuf[256]; memset(szBuf, 0x00, 256); int Size = ::HexToBin(Text, szBuf, 255); return HexToInt(szBuf, Size); }