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

C++빌더 FAQ
C++Builder Programming FAQ
[41] [TECHNIQUE] int형을 hex형태로 스트링 변환 등등
김성진.kark [kark] 20844 읽음    2001-11-29 12:04
>> 질문 : heartsim 님 ( bcbdn C++Builder Q&A 13206번 )

다음과 같이 헥사로 바꾸었습니다.
UpDown1->Position=AnsiString("0x"+Edit->Text).ToInt();
Edit->Text=IntToHex(UpDown1->Position);
(Edit->Text에는 1, 2, 3,.....9, A, B, C, D, E, F값이 들어갑니다.
근데 이번에는 Edit->Text에 순수한 정수값이 들어가야 하는데 A, B, C, D, E, F 때문에 막상 프로그램 상에 오류가 나더군요.)

그래서 인데...반대로
Hex값을(1,2, 3,....A, B, C, D, E, F) 정수로 바꿀 수 있는 함수가 있나요?


>> 답변 : 박용우(parkyw77) 님 ( bcbdn C++Builder Q&A 13207번 )

String str    이 Hex값이면 int 형으로 바꾸는 함수를 작성해보면...

String HexToInt(String str)
{   
   String temp, result;
   int index =1;
   int imsi1 = 0;   
   int imsi2 = 0;   
   for(int Length=str.Length(); Length>0; Length--,index++)         
   {                                                                           
        temp = str.SubString(index,1);
        if(temp == "a") temp =10;
        if(temp == "b") temp =11;
        if(temp == "c") temp =12;
        if(temp == "d") temp =13;   
        if(temp == "e") temp =14;   
        if(temp == "f") temp =15;      
  
        if(Length != 1)
        {   
              imsi1 = temp*(pow(16,(Length-1)));                  
        }   
        else   
        {   
              imsi1 = temp*1;   
        }
        imsi2 += imsi1;   
  }   
  result = IntToStr(imsi2);
  return result;
}


>> 추가 :

1. 일반적으로 Integer형을 Hex로 보이는 문자열을 만들기 위해

IntToHex를 사용하게 됩니다. 이렇게 되면 원하는 형태로 보여주기가 힘들어서

메모장이나 에디트박스에 바로 표현시에는 이런 형태로 사용하곤 합니다.

Edit1->Text = Format("%4x ", ARRAYOFCONST(((int)temp)))


2. 이렇게 표현된 문자열형을 다시 Integer형을 바꿀려면 위의 답변처럼 약간의

추가 코딩이 필요하게 됩니다. 개인마다 다를 수 있어서 따로 소스는 올리지 않겠습니다.


3. 가끔 char형을 int형으로 바꿀 필요가 있는데, 그때는 다음과 같은 함수를 만들어

놓으면 편할겁니다.

int CharToInt(char src)
{
    if(src>='0'&&src<='9')
       return (src-'0');
    else if(src>='A'&&src<='F')
       return (src-'A'+10);
    else if(src>='a'&&src<='f')
       return (src-'a'+10);
    else
       return -1;
  }

  4. 생각해봐야할 것은 타입변환을 지원해주는 함수가 없는 임베이디드 환경에서 코드

  작성을 해야한다면, 타입변환 함수를 하나씩 만들어줘야 한다는 겁니다. 그럴때를 대비

  해서 타입변환 함수의 소스 분석, 작성을 해두는 것이 급할때 도움이 되겠져..^^;

  sprintf, printf도 지원하지 않는데 말이져..^^

 
미루(MMISYSTEM) [sxdotori]   2005-01-26 00:42 X
ultoa() 함수 이용하시면, 2, 8, 10, 16진수로 변환 가능합니다.

+ -

관련 글 리스트
41 [TECHNIQUE] int형을 hex형태로 스트링 변환 등등 김성진.kark 20844 2001/11/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.