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
[48076] Re:[질문]소켓통신시 hex값에 대한 문의
장성호 [nasilso] 3015 읽음    2007-02-13 15:10
비슷한 질문을 몇번 하셨네요
1. 어떤값을 byte단위로 hex로 변경하려면 IntToHex(data,2)를 추천합니다.
     뭐 다른건 없고 짧고 , 인식하기 쉽잖아요
     sprint도 있고  Format 이라는것도 있어요
     뭐 직접 data를 가지고 ascii로 변환해도 됩니다.

//---------------------------------------------------------------------------
String __fastcall CharToHex(char chr)
{
    unsigned char tmp=chr>>4;
    String str="  ";
    str[1]=tmp+0x30;
    if(tmp>0x09)str[1]=tmp+0x37;
    //--------------------------
    tmp=chr&0x0F;
    str[2]=tmp+0x30;
    if(tmp>0x09)str[2]=tmp+0x37;

    return str;
}
//-------------------------------------------------------------------------------

2. 하이퍼 터미널엔 깨어진 글자가 보이는데 memo장엔 왜 안보이냐구요? (잘모름)
    정확하게는 잘 모르지만 encoding문제가 아닐까요? (font가 다르거나...)
    아니면 memo장에 입력방식이 다르거나...

3. socket으로 수신하는데 0D 0A가 안보인다구요?
    socket component를 어떤걸 쓰시는지 질 모르겠는데요...
    (indy를 쓰시는것 같은데...)

    indy라면 pTcpClient->ReadBuffer를 이용해보세요


    ------------샘플--------------------------

           IdTCPClient1->ReadBuffer(cBuf,10) ;

            String str="";
            for(int i=0;i<10;i++)
            {
                str=str+IntToHex(cBuf[i],2)+" ";
            }

            Memo1->Lines->Text=Memo1->Lines->Text+str;
            Application->ProcessMessages();
            Sleep(100);

 

하안인 님이 쓰신 글 :
: 소켓 통신으로 서버에서 데이타를 받아 오는데
: I N I N *Q X             *Q X 이런값들이 들어와서
: hex값으로 변경해서 보여 지도록 했는데요.
:
: 문제는 위의값을 ultra editor에서 hex로 변경하면
: 0D 0A 즉 캐리지리턴값과 라인피드 값이 들어 있는데
:
: 제 프로그램상에서
: data = pTcpClient->ReadChar();
:       if(cc > 0x0f)
:         sc.sprintf("%2x ",data);
:       else
:         sc.sprintf("%1x ",data);
:
: 후 메모장에 출력되도록 했는데
: 0D 0A 값은 출력되지 않더라구요.
:
: pTcpClient->ReadLn(SMDR_EOL); 으로는
: 데이타가 중간에 null이 있어서 받지 못하는 것 같구요.
:
: ReadChar로 한자씩 받으면 끝을 알아야 되는데...
:
: 어떻게 해야 알 수 있나요.

+ -

관련 글 리스트
48074 [질문]소켓통신시 hex값에 대한 문의 하안인 1529 2007/02/13
48076     Re:[질문]소켓통신시 hex값에 대한 문의 장성호 3015 2007/02/13
48091         Re:Re:[질문]소켓통신시 hex값에 대한 문의 하안인 2587 2007/02/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.