MFC Unicode CString을 BYTE 배열로 리턴하는 함수 예제
HEX string은 "0xab 0x01 0x02 0x03 0xfa 0xFF"와 같이 Space로 구분되어 있을 경우
/// 유니코드 CString
/// strData = _T("0xab 0x01 0x02 0x03 0xfa 0xFF");
/// rt[] = { 253, 1, 2, 3, 250, 255 };
byte* etUsbTestDlg::StringToHex(CString strData)
{
CString strValue;
int i = 0; // substring index to extract
TCHAR chSep = ' ';
byte rt[1024] = { 0, };
while (AfxExtractSubString(strValue, strData, i, chSep))
{
if (strValue.GetLength() != 0)
{
strValue = strValue.Trim();
int pos = strValue.Find(_T("0x")); //0xFC
if (pos == -1) break;
CString value = strValue.Mid(2, strValue.GetLength() - 2);
value = value.MakeUpper();
char *pValue = (LPSTR)(LPCTSTR)value;
//value = _T("AB");
//pValue[] = { 'A', 0, 'B', 0 };
byte bValue = 0;
if (pValue[0] >= 'A')
bValue = (pValue[0] - 'A' + 10) * 16;
else
bValue = pValue[0] * 16;
if (pValue[2] >= 'A')
bValue += (pValue[2] - 'A' + 10);
else
bValue += pValue[2];
rt[i] = bValue;
}
i++;
}
return rt;
}
MFC의 AfxExtractSubString 함수를 이용하서 Space Split을 처리하고 각각의 단어를 구분해서 Hex 값을 구하는 간단한 예제 함수.
'MFC' 카테고리의 다른 글
UpdateData() 함수 Param 의미 (0) | 2023.07.07 |
---|---|
ON_CONTROL_RANGE를 이용해서 같은 이벤트 처리를 한 함수로 해결 방법 (0) | 2023.07.05 |
MFC jsoncpp 설치 (0) | 2022.11.28 |
CScrollView를 이용한 Image Viewer 예제 (0) | 2022.07.27 |
CXTPPropertyPage OK 버튼 누르고 종료 여부 체크 방법 (0) | 2022.07.15 |