2

文字列値を非ascii文字を含む暗号化された文字列に暗号化するC#クラスライブラリから呼び出すアンマネージCdllがあります。データを取得してそのバイナリ値をファイルに書き込む必要がありますが、C#はテキストを。stringではなくとして扱いますbyte[]

暗号化された値には通常、特殊文字(、、など)が含まれ\rます\O。あるタイプのコードセット(ascii、utf-7、utf-16)を使用して返された文字列をC#に変換すると、実際のバイナリ表現ではなく、Windowsが解釈する値として特殊文字の値が書き込まれます。

私の質問は、アンマネージdllからbyte[]文字列ではなくデータをプルして、ファイルに書き込むことができるようにするにはどうすればよいBinaryWriterですか?

ありがとう。

4

3 に答える 3

2

私があなたを正しく理解しているなら、おそらくUTF8でEncoding.GetBytes()が必要だと思いますか?

于 2008-10-11T17:54:55.677 に答える
2

ASCIIEncoding クラスを使用してみましたか? UTF-8 文字を「?」の ASCII 文字に変換する必要があります。

MSDN ページ

使用法

ASCIIEncoding ascii = new ASCIIEncoding();
Byte[] encodedBytes = ascii.GetBytes(unicodeString);
于 2008-10-11T18:41:39.233 に答える
0

P/Invoke を使用していますか? うーん...おそらく [MarshalAs(UnmanagedType.*)] を指定すると役立つでしょう。また、代わりに暗号化されたデータを (void *) として公開する中間 C 関数を作成することもできます。これにより、byte[] に入りやすくなります。

于 2008-10-11T18:46:19.893 に答える