我正在将一些Java代码转换为C#,迄今为止一切都运行得很好,但是我遇到了一个使用^操作符的问题。 在C#中,Console.WriteLine(127 ^ 0xffffffff);
打印出4294967168,而在Java中 System.out.println(127 ^ 0xffffffff);
打印-128。 我一直在寻找是否需要使用其他替代方法,但是我还没有找到。
我正在将一些Java代码转换为C#,迄今为止一切都运行得很好,但是我遇到了一个使用^操作符的问题。 在C#中,Console.WriteLine(127 ^ 0xffffffff);
打印出4294967168,而在Java中 System.out.println(127 ^ 0xffffffff);
打印-128。 我一直在寻找是否需要使用其他替代方法,但是我还没有找到。
C#支持有符号和无符号整数(Java仅支持有符号整数):
unchecked {
// you want signed int
int result = (int) (127 ^ 0xffffffff);
Console.WriteLine(result);
}
0xff
将被解释为int而不是unsigned int。 - Voo