1

コードを Java から C# に変換していますが、int と uint で行き詰まりました。Java コード (抜粋):

public static final int SCALE_PROTO4_TBL    = 15;
public static final int [] sbc_proto_4 = { 0xec1f5e60 >> SCALE_PROTO4_TBL };

変換された c# コード (抜粋):

public const int SCALE_PROTO4_TBL = 15;
int[] sbc_proto_4 = new int[] { 0xec1f5e60 >> SCALE_PROTO4_TBL };

その結果、次のコンパイル エラーが発生します。 エラー CS0266 型 'uint' を 'int' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)

上記のようなコードはたくさんありますが、すべての Java int を C# uint に変換する必要があるかどうかわかりません。Java int が負の数の場合、C# uint は負の値を格納しないことを思い出すと、問題が発生しました。

問題にどのように取り組むべきかについての意見はありますか?

4

1 に答える 1

1

次のように試すことができます:

int[] sbc_proto_4 = new int[] { unchecked((int)0xec1f5e60) >> SCALE_PROTO4_TBL };

つまり、uint(0xec1f5e60) を明示的にキャストする必要があります。

于 2015-11-12T09:37:42.237 に答える