C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49343] Re:2진수에서 16진수로 16진수에서2진수로 변환어떻게 하나요
또아리 [sky4242] 4990 읽음    2007-05-23 14:11
포럼에서 참고한 소스부분입니다. 참고하세요.

//---------------------------------------------------------------------------2007/4/2 진수 변환 및 Write Data Make 루틴
char* __fastcall TMainForm::Dec2Bin(unsigned long  value)
{
    int temp[MAX_SIZE], i;
    char result[MAX_SIZE];
        char bin[MAX_SIZE];

    for(i=255; i>=0; i--) {
            temp[i]=value&1;
            value=value>>1; //오른쪽으로 한 비트만 이동하여 2진수를 만든다.
    }

    for(i=0;i<=255;i++) {
        if(temp[i]==0)
            result[i] = '0';
        if(temp[i]==1)
            result[i] = '1';
                result[i+1]=NULL;
    }

        // 2진수 앞의 0은 짤라냄
    int n;

    for(n=0;n<=255;n++) {
        if(result[n]=='1')
        break;
    }
    int x=0;

    for(int i=n;i<=255;i++) {
        bin[x] = result[i];
        bin[x+1] = NULL;
        x++;
    }

    return strdup(bin);
}
//-----------------------------------------------------------------------------
// 진법 변환 2,8,10,16 <-> 2,8,10,16
char* __fastcall TMainForm::BaseConverter(int rsc, char *data, int obj)
{
    char *endptr;
    unsigned long decvalue;
    char temp[1024];
    int i;

    for(i=0;i<1024;i++)temp[i]=NULL;

    // 무조건 10진수로 변경을 함
    decvalue = strtoul(data, &endptr, rsc);

    switch(obj) {
        case 2:
            sprintf(temp, "%s", Dec2Bin(decvalue)); // 2진수로
            break;

        case 8:
            sprintf(temp, "%o", decvalue);          // 8진수로
            break;

        case 10:
            sprintf(temp, "%lu", decvalue);         // 10진수로
            break;

        case 16:
                        sprintf(temp, "%04x", decvalue);
            break;

        case 168:
            sprintf(temp, "%8x", decvalue); 
            break;
    }

    return strdup(temp);
}


사용할때   BaseConverter(16, lHex.c_str(), 10);
             ---> 이런식으로 사용하시면 됩니다.    BaseConverter(2, lHex.c_str(), 16);
그분 성함이 생각이 안나서 성함은 못적네요...^^ 아마 검색하시면 나올겁니다. BaseConverter로..


신종열 님이 쓰신 글 :
: 왕초보입니다....
: 2진수에서 16진수로 16진수에서 2진수로 진수변환어떤식으로해야하나요?

+ -

관련 글 리스트
49338 2진수에서 16진수로 16진수에서2진수로 변환어떻게 하나요 신종열 2493 2007/05/23
49343     Re:2진수에서 16진수로 16진수에서2진수로 변환어떻게 하나요 또아리 4990 2007/05/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.