0

我有一个大小为 2 的字节数组,其中包含来自基本多语言平面的单个 UTF-16LE 编码的 Unicode 字符。

BYTE b[2];
memset(b,0,2);
b[0] = 0x31;
b[1] = 0x00;   //In future this byte contain info when unicode use , but now 0x00.

现在我想将它存储在CStringor中TCHAR

编辑

我确实用过

TCHAR tch = (TCHAR)b;  //tch = 'X'

这怎么可能?

4

3 回答 3

4

您似乎是在说您的BYTE[2]数组包含以 UTF-16(或 UCS-2 - 它们与基本平面等效)表示的单个 Unicode 代码点(来自基本平面)。在这种情况下,您可以通过以下方式构造一个字符CString

CStringW s((wchar_t*)b, 1);

或者

CStringW s((wchar_t&)b);

目前尚不清楚您为什么使用BYTE[2]而不是wchar_tWCHAR开始使用。

于 2013-10-04T20:34:41.667 回答
0

简单地:

BYTE recv_buffer[1024];
CString str_recv(recv_buffer);
于 2017-10-18T12:38:12.917 回答
-1

我无法让上面建议的铸造方法起作用(VS 2015 in 2016)。这是我从真正了解 MFC 的已故 Scott McPhillips 那里学到的技术:

CString str;
LPWSTR strBuf = str.GetBufferSetLength( 4 ); // your b two bytes plus unicode trailing null
::memset( strBuf, 0, 4 ); // make sure the trailing bytes are null
::memcpy_s( strBuf, 2, b, 2 ); // copy over your byte bytes
str.ReleaseBuffer();
于 2016-04-15T18:58:13.560 回答