あなたの助けが必要なデータ変換の問題があります。
私のプロジェクトはCと C#のInterOp
間です。Cからのすべてのデータは型であり、データ自体はバイナリまたは表示可能な文字である可能性があります。つまり、各バイトは 0x00 から 0xFF の範囲にあります。char *
データを使用してinmarshal::PtrToStringAnsi
に変換していますが、一部のバイト値が変更されていることがわかりました。たとえば、C382 を C32C に変換します。は しか変換できないからではないかと思いますが、範囲を超えていますか? 誰が理由と最良の方法を説明できますか?char*
String^
CLI code
ANSI
7-bit char
82
基本的に私がやりたいことは、エンコーディング変換は必要ありません。たとえば、任意の char * フェイス値を文字列に変換しchar *p = "ABC"
たいString ^s="ABC"
だけ*p="C382"
です^s="C382"
。
私の .NET コード内では、2 つのサブクラスがバイナリ データまたは実際の文字列を表す入力文字列を受け取ります。"C382" to byte[]=0xC3 0x82;
データを読み戻すと、C382 はデータベースからバイナリ データとして取得され、最終的には に変換する必要がありますchar* "C382"
。
両方向でこれらを行う方法と同様の経験をした人はいますか? 私は多くの方法を試しましたが、それらはすべてエンコード方法のようです。