String To Hexa

 | C, C++
2007.06.25 18:26

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


신고
Posted by window31


댓글을 달아주세요

  1. 2007.07.04 11:42 신고
    댓글 주소 수정/삭제 댓글
    16진수 문자열을 정수형으로 변환 하는것이 목적인가요?
    strtol 함수로 가능할것 같은데요.. 원하시는게 맞는건지 모르겠군요. ^^
  2. 2007.07.05 23:44 신고
    댓글 주소 수정/삭제 댓글
    아 이런 훌륭한 RTL 함수가 있었군요-.- 저걸 만든 사람은 뭐고, 또 찾아서 구해다 쓰는 저는 뭔지 ㅎㅎ 좋은 정보 감사합니다~
  3. 2007.07.09 22:46 신고
    댓글 주소 수정/삭제 댓글
    ㅋㅋ;;;.. 저도 마침 16진수 문자열을 정수로 변환할일이 생겼는데..ㅋ;;
    strtol..ㅋㅋ 써봐야겠네요;;

BLOG main image
by window31

카테고리

분류 전체보기 (285)
Reverse Engineering (22)
C, C++ (20)
Kernel (8)
Guitar (19)
잡담 (79)
etc (8)
who am i (8)
보안 이야기 (89)
Tools (3)
월간 마이크로소프트웨어/그.. (28)

글 보관함