|
비슷한 질문을 몇번 하셨네요
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로 한자씩 받으면 끝을 알아야 되는데...
:
: 어떻게 해야 알 수 있나요.
|