Q&A

  • 16진수 한글데이터 변환은 어떻게 하나요?
문자 "test입니다.야옹,123456789"를 16진수로 변환하여 전송 후
받는 쪽에서 16진수 데이터를 원래대로 복원하고자 하는데 한글부분이 깨집니다.

"test입니다.야옹,123456789"   //원문=> "74657374C0D4B4CFB4D92EBEDFBFCB2C313233343536373839"  //16진수
=> "testAO´I´U.¾ß¿E,123456789"  //수신

<!--source-->
lv_resp := '74657374C0D4B4CFB4D92EBEDFBFCB2C313233343536373839';
i :=0;
while i < (length(lv_resp) div 2) do
begin
     if StrToInt('$' + copy(lv_resp,i*2+1,2)) > 127 then
     begin  //한글
          cvtemp := cvtemp + widechar(StrToInt('$' + copy(lv_resp,i*2+1,4)));
          i := i + 2;
      end
      else  //영숫자
      begin
           cvtemp := cvtemp + widechar(StrToInt('$' + copy(lv_resp,i*2+1,2)));
           i := i + 1;
      end;
end;
1  COMMENTS
  • Profile
    신철우 2005.10.18 18:49
    일반 WideString이 아니고 AnsiString으로 Char사용

    i:integer;
    cvStr:string;  //중요-한글변환 메모리변수라야 한글변환됨.
    for i := 0 to (length(lv_resp) div 2)-1 do
         cvStr := cvStr + Char(strtoint('$'+ Copy(lv_resp,i* 2+1,2)));
    memRecvStr.Text := cvStr;