원데이터가 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로 바꾸고 그런다음 하나하나 더해서 문자열을 만드는게 아닌,
:
: 위에것을 한번에 처리하는 윈도우 함수나 라이브러리가 있는지 궁금해서 글을 올립니다.
:
: 이상 감사합니다.
|