|
안녕하세요? 개박살입니다.
: strcpy(temp,Str.c_str());
여기가 문제입니다.. strcpy란놈은 스트링을 Copy하는 함수입니다.
프로그램에서의 스트링은 끝이 0x00 즉, NULL로 끝나는 메모리 배열을 지칭하므로
님께서 말씀하신
: 0x54, 0x04, 0x00, 0x0f, 0xff, 0x00, 0x00, 0xa0, 0x0d, 0x0a
가 0x54, 0x04, 0x00 <<-- 여기서 끝이 나게 되는거죠
2글자의 String으로 계산이 되어서 이렇게 되는거 같군요
흠.. 그럼 참고하세요~
배준상 님이 쓰신 글 :
: 안녕하세요
: 빌더 왕초보 배준상이라고 합니다
: 다름이 아니라, 무지 급한 질문하나 드리려고 합니다.
: 내용인 즉, 다음과 같습니다.
:
: socket component를 통해서 데이터를 받는데 데이터의 내용은 hex입니다
: 즉 다음과 같은 10개의 byte를 받습니다.
: 0x54, 0x04, 0x00, 0x0f, 0xff, 0x00, 0x00, 0xa0, 0x0d, 0x0a
: 그런데, 두번째 바이트까지만 수신되고 나머지는 blank로 인식됩니다.
: 제 코드가 잘못된거 같은데, 어딘지 도무지 찾을수가 없군요
: 도와주세요
: 제 코드는 다음과 같습니다.
:
: AnsiString Str, Str1;
: char temp[80], x[80];
: Str = ClientSocket->Socket->ReceiveText();
: strcpy(temp,Str.c_str());
: for(int i=0;i<10;i++)
: {
: sprintf(x, "%x", temp[i]);
: Str1 = Str1 + x + " ";
: }
: Memo1->Lines->Add(Str1);
:
: 물론, 동일한 코드로 0x54만 10바이트 반복해서 받으면 정상입니다.
|