【发布时间】:2018-05-23 07:08:34
【问题描述】:
我尝试在 MFC 中将 CString 转换为 BYTE*` 和“BYTE* 到 CByteArray”,根据您的建议,CString 已转换为 BYTE*。但我无法将整个 Byte* 转换为 CByteArray 它返回带有一些垃圾值的部分数据。
我在这里描述了我的实际问题......
代码:
CString csData =_T("someData");
BYTE *pByteArray = (PBYTE)(LPCTSTR)csData.GetBuffer();
CString str;
str=LPTSTR(pByteArray);
AfxMessageBox(str); //returns "someData"
CByteArray arrByte2;
arrByte2.SetSize(csData.GetLength()+1);
memcpy(arrByte2.GetData(), pByteArray, csData.GetLength()+1);
CString text((LPTSTR)arrByte2.GetData(),arrByte2.GetSize());
CStringA result(text);
AfxMessageBox(text);//returns "some﵄﷽ꮫꮫ"
【问题讨论】:
-
你问错问题了。显然,将受控字符序列转换为
BYTE*没有问题。您真正的问题是,您后来未能适当地解释该数据。此外,GetBuffer()是错误的调用(其中之一,它要求您稍后调用ReleaseBuffer())。你的意思是打电话给GetString。 -
您实际上想要达到什么目的?这看起来有点像XY problem。
标签: arrays visual-c++ mfc byte c-strings