2

我知道这是一个简单的问题,但我尝试了很多方法,在所有这些方法中,我都会丢失数据、文本数据,而不是每个字节后的尾随 0。

我转换CStringwchar_tusing GetBuffer(0),仍然没有运气。我无法获得适当的LPBYTE.

最后我需要它const LPBYTE,但我认为通过简单的铸造LPBYTE我可以得到const LPBYTE

那么你能帮我转换或CString数组吗?wchar_tLPBYTE

谢谢

4

1 回答 1

2

如果您想将 a 的内容“CString视为”一个简单的“原始”序列(数组)BYTE,您可以使用CString::GetString()方法获取指向第一个CString字符的指针,然后转换为const BYTE*

CString str;
....
const BYTE* pb = reinterpret_cast<const BYTE*>(str.GetString());

如果您想“看到”单个wchar_t作为BYTE's 的序列,您可以获取其地址并再次转换为const BYTE*

wchar_t wch;
....
const BYTE* pb = reinterpret_cast<const BYTE*>(&wch);

但是,如果您想从 Unicode UTF-16 转换为另一种编码,例如 UTF-8,您可能需要使用一些转换助手,例如CW2A

CString strUtf16; // Assume UNICODE builds (the default since VS2005)
....
// Convert from UTF-16 to UTF-8
CW2A strUtf8( strUtf16, CP_UTF8 );

// Convert (cast) to const BYTE*
const BYTE* pb = reinterpret_cast<const BYTE*>( static_cast<const char*>(strUtf8) );
于 2013-01-18T17:07:05.913 回答