의외로 strtol() 함수를 모르시는 분이 많네요. 문자열을 정수로 바꾸는데 atoi()는 알아도

strtol()를 사용하는 분이 적어 보입니다. 이유가 뭘까 생각해 보면 atoi() 보다 인수가 많아

복잡해 보여서가 아닌가 생각됩니다. 그러나 문제는 atoi()만 사용하다면 보니

2진수나 8진수, 16진수의 경우 다른 변환 함수가 없는 줄 알고 직접 만드는 분이 있다는 것이죠.

strtol()함수를 사용하면 다양한 진법의 문자열을 숫자로 변경할 수 있습니다.

예를 들어 "0x"로 시작하는 문자열을 16진수로 변환하려면 아래와 같이 처리할 수 있습니다.


static int getNumber( char *a_Str)

{

   char   *pTemp;

   int       nResult;


   if ( 0 == strncasecmp( a_Str, "0x", 2)){

      nResult  = strtol( a_Str+2, &pTemp, 16);

   } else {

      nResult  = strtol( a_Str+2, &pTemp, 10);

   }

   return nResult;

}


위 getNumber() 함수는 인수로 받은 문자열이 0x로 시작하면 16진수로 변환해서 반환하고, 숫자로 시작한다면 10진수로 변환해서 반환 합니다.