我知道将CByteArray
转换为CString
非常简单。但是我如何反过来做 - 从CString
到CByteArray
?
答案 0 :(得分:3)
CString类的GetBuffer()方法返回您需要的数组。之后,您可以使用memcpy或其他类似函数将其复制到CByteArray对象。
CString csData = L"someData";
CByteArray byteArr;
BYTE *pByteArray = (PBYTE)(LPCTSTR)csData.GetBuffer();
byteArr.SetSize(csData.GetLength());
memcpy(byteArr.GetData(), pByteArray, csData.GetLength());
答案 1 :(得分:2)
您需要考虑到CString
中的1个字符通常不是1个字节。
const size_t noBytes = sizeof(CString::XCHAR) * myString.GetLength();
byteArray.SetSize( noBytes );
std::memcpy(
byteArray.GetData(),
reinterpret_cast<BYTE*>(myString.GetBuffer()),
noBytes );
所以你需要考虑这是否真的是预期的行为。