Java到C#的转换-int uint类型



我正在将代码从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#int?我记得C#uint不存储负值,如果javaint是负数,那么我就有问题了。

关于我应该如何处理这个问题,有什么意见吗?

您可以这样尝试:

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

即,您必须显式地强制转换uint(0xec1f5e60)。

最新更新