我正在尝试将具有逻辑右移(
>>>
)(>>>和>>之间的差异)的Java代码翻译为C#
Java代码是
return hash >>> 24 ^ hash & 0xFFFFFF;
C# 被标记
>>>
为语法错误。
如何解决这个问题?
更新1 人们建议在 C# 中使用
>>
,但这并没有解决问题。
System.out.println("hash 1 !!! = " + (-986417464>>>24));
是197
但是
Console.WriteLine("hash 1 !!! = " + (-986417464 >> 24));
是-59
谢谢!
Java 需要引入
>>>
,因为它唯一的无符号类型是 char
,其运算是以整数完成的。
另一方面,C# 具有无符号类型,它们执行右移而不进行符号扩展:
uint h = (uint)hash;
return h >> 24 ^ h & 0xFFFFFF;
C# 11 支持逻辑(“无符号”)右移运算符 >>>。