String To Hexa
string을 int 값으로 변환하기 위해서는 atoi()라는 함수를 누구나 사용한다.
그런데 atoi()는 변환해준 int 값이 10진수만을 지원한다는 단점이 있다.
따라서 16진수 형태의 string을 받아왔을 때 atoi를 쓴다면, A~F사이의 문자열을 만나는 순간
값이 거기서부터 끊겨 버린다 :(
ex)
char szString[16] = "35BA75C";
DWORD dwValue = atoi(szString);
printf("fuck dwValue: %Xㅠㅠ\n", dwValue);
// 결과
fuck dwValue: 35ㅠㅠ
그래서 뒤져봤는데, 16진수로 변환해주는 함수가 따로 있는건 아닌거 같았다....;
까짓꺼 직접 만들까 하다가 내가 만드는 스트링 함수는 믿을 수가 없어서 ㅋ 뒤지고 있는데
누군가 만들어놓은 좋은 함수를 발견했다. :)
int StringToHexa(const char *parm_string)
{
int count = strlen(parm_string), i = 0;
int hexa = 0;
for(i = 0; i < count; i++){
if(*parm_string >= '0' && *parm_string <= '9') hexa = hexa*16 + *parm_string - '0';
else if(*parm_string >= 'A' && *parm_string <= 'F') hexa = hexa*16 + *parm_string - 'A' + 10;
else if(*parm_string >= 'a' && *parm_string <= 'f') hexa = hexa*16 + *parm_string - 'a' + 10;
parm_string++;
}
return hexa;
}
char szString[16] = "35BA75C";
DWORD dwValue = StringToHexa(szString);
printf("fuck dwValue: %X헤벌레\n", dwValue);
// 결과
fuck dwValue: 35BA75C헤벌레
필요하신 분 복사해서 가져다 쓰면 좋을 것 같다 (난 필요했다)
출저는 아래 url
http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=1821&page=19