2

私はそれが単純な質問であることを知っていますが、私は非常に多くのアプローチを試しました.それらのすべてで、各バイトの後に続く0ではなく、データ、テキストデータを失います.

を使用するように変換CStringしましたが、まだ運がありません。適切な を取得できません。wchar_tGetBuffer(0)LPBYTE

最終的には である必要がありconst LPBYTEますが、単純なキャストでLPBYTEを取得できると思いますconst LPBYTE

CStringそれで、変換または配列wchar_tへの変換を手伝ってもらえますか?LPBYTE

ありがとう

4

1 に答える 1

2

CStringa の内容を単純な「生の」シーケンス (配列) として「見たい」場合は、 method をBYTE使用CString::GetString()して最初の文字へのポインターを取得し、CString次にキャストすることができconst BYTE*ます。

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

wchar_tシングルを一連の として「見たい」場合BYTEは、そのアドレスを取得して、再度 にキャストできます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 に答える