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
[59946] strtok와 while 관련 가르쳐주세요.
박정용 [] 3779 읽음    2010-01-25 09:03
"48 65 6C 6C 6F 20 57 6F 72 6C 64 21"라는 Hex값과 사이띄게로 이뤄진 문자열을 사이띄게를 기준으로 잘라서 각Hex값을 Hex값과 10진 int값과 해당 Ascii코드값에 해당하는 char값을 출력하려고 하는데, while문에서 48 값이 생략됩니다.
뭐가 문제일까요?

출력값
=================================================

hexadecimal value = 65, int value = 101, char value=e
hexadecimal value = 6C, int value = 108, char value=l
hexadecimal value = 6C, int value = 108, char value=l
hexadecimal value = 6F, int value = 111, char value=o
hexadecimal value = 20, int value = 32, char value=
hexadecimal value = 57, int value = 87, char value=W
hexadecimal value = 6F, int value = 111, char value=o
hexadecimal value = 72, int value = 114, char value=r
hexadecimal value = 6C, int value = 108, char value=l
hexadecimal value = 64, int value = 100, char value=d
hexadecimal value = 21, int value = 33, char value=!

Process returned 0 (0x0)   execution time : 0.312 s
Press any key to continue.
=================================================

#include <iostream>
using namespace std;

char HexChar2Bin(char *HexStr);
int Hex2Dec(char ch);
int main()
{
    HexChar2Bin("48 65 6C 6C 6F 20 57 6F 72 6C 64 21");

    return 0;
}

char HexChar2Bin(char HexStr[])
{
    char *Hex = strtok(HexStr, " ");
while ((Hex = strtok(NULL, " ")) != NULL)
{
        int value;
        value = (int)Hex2Dec(Hex[0])*16+Hex2Dec(Hex[1]);
        char charValue = (char)value;

        cout << "hexadecimal value = "<< Hex << ", int value = " << value
             << ", char value=" << charValue << endl;
    }
    return 0;
}
int Hex2Dec(char ch)
{
if(ch >= '0' && ch <= '9') return (int)(ch - '0');
if(ch >= 'A' && ch <= 'F') return (int)(ch - 'A' + 10);
if(ch >= 'a' && ch <= 'f') return (int)(ch - 'a' + 10);
return 0;
}

+ -

관련 글 리스트
59946 strtok와 while 관련 가르쳐주세요. 박정용 3779 2010/01/25
59949     Re:strtok와 while 관련 가르쳐주세요. 둘리.CSIEDA 4076 2010/01/25
59948     Re:strtok와 while 관련 가르쳐주세요. 한수동 4576 2010/01/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.