Я знаю, что преобразование CByteArray
в CString
довольно простое. Но как мне это сделать наоборот - от CString
до CByteArray
?Как преобразовать CString в CByteArray?
0
A
ответ
3
Метод GetBuffer() класса CString возвращает необходимый вам массив. После этого вы можете скопировать его с помощью memcpy или другой подобной функции в объект CByteArray.
CString csData = L"someData";
CByteArray byteArr;
BYTE *pByteArray = (PBYTE)(LPCTSTR)csData.GetBuffer();
byteArr.SetSize(csData.GetLength());
memcpy(byteArr.GetData(), pByteArray, csData.GetLength());
2
Вы должны принять во внимание, что 1 символ в CString
обычно не 1 байт.
const size_t noBytes = sizeof(CString::XCHAR) * myString.GetLength();
byteArray.SetSize(noBytes);
std::memcpy(
byteArray.GetData(),
reinterpret_cast<BYTE*>(myString.GetBuffer()),
noBytes);
Таким образом, вам необходимо рассмотреть, действительно ли это предполагаемое поведение.