2017-01-22 9 views
0

C++で書かれた古いコードをC#に書き直そうとしています。コードは文字でバイナリ操作を行いますが、別の結果を受け取ります(おそらくC#のUnicodeのためにいくつか悪い操作をします)。私はC#に、このC++コードを書き直す必要がC#でのchar(C++)の操作

:C++でこのコードの

myChar = 'K'^128; 

結果は、C++のデータ型charに-53( 'E')です。 203におけるC#の結果(再び 'E')C#のデータ型チャー

同じ動作。

charは大丈夫ですが、私はC++と同じバイト値を必要とします(これは数学演算を行うためです)。 C#のcharを等価なC++のバイト値に安全に変換する方法をお勧めしますか?

シングルバイトの2の補数表現203でおかげ

答えて

2

は-53のの符号なしの解釈です。

あなたがC++ signed char型の同等の表現を使用したい場合は、タイプはsbyte次のようになります。C++標準はcharは符号の有無を判断するために、実装にそれを残していること

sbyte myChar = (sbyte)('K'^128); 

注意これは、コードに変更を加えることなく、標準準拠のC++の一部が、-58ではなくmyCharに対して203を出力することを意味します。