|
아, 0x0102군요.
그렇다면 문자열이라기 보다 비트 단위(2진수) 연산을 해야 되는군요.
0x0102가 A라는 스트링의 한 글자입니다. AnsiString을 char 로 한글자씩 받을때 c_str()을 쓰듯이 똑같이 c_str()을 사용하면 됩니다.
단, 유니코드이기 때문에 char(8비트) 가 아니라 wchar_t(16비트) 입니다.
먼저 한글자를 받을 wchar_t wc; 라고 해서 하나 두고, 그리고 0x0102를 반씩 잘라 저장할 char c1, c2; 를 만듭니다.
그러면,
wc = A.c_str()[0]; // 첫번째 0x0102입니다. 두번째 0203은 c_str()[1], 그 다음은 c_str()[2]...
c1 = wc >> 8; // 오른쪽으로 8비트만큼 밀어 버립니다. 그러면 상위 8비트만 남게 됩니다.
c2 = wc & 0x00FF // 상위 비트를 00으로 AND 연산하여 없애버려 하위 8비트만 남습니다.
이렇게 하면 c1에 0x01, c2에 0x02이 들어갑니다.
이걸 말씀하시는게 맞는지 모르겠네요...
얌냠 님이 쓰신 글 :
: 아 죄송합니다 A = 0x0102, 0x0203, 0x0304 이고, B = 0x01, 0x02, 0x02, 0x03, 0x03, 0x04 로 만들고 싶습니다.
:
: Starlet 님이 쓰신 글 :
: : 질문이 애매하네요.
: : UnicodeString A = "0102, 0203, 0304"; 인가요?
: : 아니면 0x0102, 0x0203, 0x0304 로 저장되어 있는 것인가요?
: :
: : 얌냠 님이 쓰신 글 :
: : : 안녕하세요. Substring에 대해서 여쭤보려고 합니다.
: : : 제가 UnicodeString으로 되어있는 데이터를 substring을 이용해서 AnsiString으로 변환하려고 합니다.
: : : 예를들어 UnicodeString A = 0102, 0203, 0304와 같이 저장되어 있을때 각 열에 해당되는 4개의 숫자를 01, 02, 02, 03, 03, 04 와 같이 2개씩 잘라서 AnsiString으로 정의된 변수 B에 저장하고자 합니다.
: : : 제가 생각했던 코딩은 이렇습니다.
: : :
: : : =================================
: : :
: : : UnicodeString A;
: : :
: : : AnsiString B;
: : :
: : : for (int i = 1; i < A.Length(); i++)
: : : {
: : : B[2*i-1] = A[i].SubString(1,2);
: : : B[2*i] = A[i].SubString(3,4);
: : : }
: : : ==================================
: : : 이대로 build를 하니
: : : [BCC32 Error] Main.cpp(7208): E2294 Structure required on left side of . or .*
: : : 이런 에러가 발생하는데 뭐가 문제인지 잘 모르겠습니다. 도움 부탁드립니다.
|