본문 바로가기
C & C++/C & C++

16진수 입력받기

by izen8 2011. 12. 14.
반응형

unsigned char HexToByte(char hex)
{
 switch(hex)
 {
 case '0': return 0;
 case '1': return 1;
 case '2': return 2;
 case '3': return 3;
 case '4': return 4;
 case '5': return 5;
 case '6': return 6;
 case '7': return 7;
 case '8': return 8;
 case '9': return 9;
 case 'A': case 'a': return 10;
 case 'B': case 'b': return 11;
 case 'C': case 'c': return 12;
 case 'D': case 'd': return 13;
 case 'E': case 'e': return 14;
 case 'F': case 'f': return 15;
 }
 return 32;
}

unsigned int hextoi(CString strHex)
{
 unsigned char bin[8] = {0,};
 unsigned int m_nDEC = 0;

 int nLen = strHex.GetLength();
 if (nLen > 8)
  return -1;

 for (int i=0 ; i<nLen ; i++) {
  bin[i] = HexToByte(strHex[(nLen-1) - i]);
  if(bin[i] >= 0 && bin[i] <= 15) {    // 0 ~ A ~ F
   m_nDEC += bin[i] << (4*i);     // 10진수 출력
  }
  else if (bin[i] == 32) {
   return -1;
  }
 }
 return m_nDEC;
}

반응형

댓글