몰랐던 기능을 하나 배워갑니다.
대답해주셔서 감사합니다.
좋은하루 되세요.
정성훈.해미 님이 쓰신 글 :
: 원데이터가 1바이트단위의 숫자배열이라면
: 파싱없이 그냥 단순 변환만으로 간단하게 문자열 처리가 되겠지만
:
: 원하시는 것처럼 원데이터가 문자로표시된 숫자를 파싱해주는 함수는 없습니다.
:
: 공백으로 구분하여 나눈 후 그문자를 숫자로 변환하고
: 그것을 char에 넣는 지금의 방법을 그대도 사용하세요.
:
: 대신 일일이 합칠 필요는 없습니다.
: char배열에 순서대로 넣은 후 그걸 String으로 변환하면 끝납니다.
:
: 예)
:
: UnicodeString PasingData;
: TStringList *lst = new TStringList;
:
: // 공백으로 구분해서 문자열을 나눔
: lst->Delimiter = ' ';
: lst->DelimitedText = "60 63 120 109 108 32 118 101 114 115 105 111 110 61 34 49 46";
:
: // 변환할 숫자 개수+1만큼 char배열을 만든다,
: char *Data = new char[lst->Count+1];
:
: // 문자열숫자를 변환
: for(int i=0; i<lst->Count; i++) {
: Data[i] = lst->Strings[i].ToIntDef(0);
: }
: Data[lst->Count] = 0x00;
:
: // char문자열을 String로 변환
: PasingData = UnicodeString(Data);
:
: // 메모리 삭제
: delete Data;
: delete lst;
:
:
: PasingData 가 변환된 결과 문자열입니다.
:
:
: 이걸 함수로 만들어 쓰시면 될거 같은데요.
:
: UnicodeString DecStr2Str(UnicodeString ADecStr)
: {
: UnicodeString PasingData;
: TStringList *lst = new TStringList;
:
: lst->Delimiter = ' ';
: lst->DelimitedText = ADecStr;
:
: char *Data = new char[lst->Count+1];
:
: for(int i=0; i<lst->Count; i++) {
: Data[i] = lst->Strings[i].ToIntDef(0);
: }
: Data[lst->Count] = 0x00;
:
: PasingData = UnicodeString(Data);
:
: delete Data;
: delete lst;
:
: return PasingData;
: }
:
:
:
:
: SHAWN 님이 쓰신 글 :
: : 안녕하세요.
: :
: : 아래와 같은 코드가 있습니다.
: :
: : ex)
: : 60 63 120 109 108 32 118 101 114 115 105 111 110 61 34 49 46
: : < ? x m l SP v e r s I o n = " 1 .
: :
: : 이것은 십진수로 저는 각 숫자를 읽어들여 char로 바꾸고 그런다음 char를 합쳐서 문자열을 만듭니다.
: :
: : 그래서 완성한 데이터를 읽어서 분석을 하는데.
: :
: : 문득 궁금한점이 생겨서.... 위와같은 십진수 코드를 제가 현재 작업하는 것처럼 하나하나 읽어서
: :
: : char로 바꾸고 그런다음 하나하나 더해서 문자열을 만드는게 아닌,
: :
: : 위에것을 한번에 처리하는 윈도우 함수나 라이브러리가 있는지 궁금해서 글을 올립니다.
: :
: : 이상 감사합니다.
|