在 R 中,如果我执行 bitXor(2496638211, -1798328965)
我会返回 120。
在nodeJS中2496638211 ^ -1798328965;
返回120。
如何在 C# 中执行此操作? (我想我正在努力理解 C# 类型声明以及 R 和 NodeJS 大概转换为 32 位的方式)
最佳答案
在 C# 中,您必须使用 unchecked
并强制转换为 int:
unchecked
{
int result = (int)2496638211 ^ -1798328965;
Console.WriteLine(result); // Prints 120
}
您可以编写一个方法来执行此操作:
public static int XorAsInts(long a, long b)
{
unchecked
{
return (int)a ^ (int)b;
}
}
然后调用它:
Console.WriteLine(XorAsInts(2496638211, -1798328965)); // Prints 120
请注意,通过转换为 int
,您将丢弃 long
的前 32 位。这就是 bitXor()
正在做的事情,但是您真的确定这是您想要的行为吗?
关于javascript - C# 按位异或计算在 R 或 NodeJS 中似乎很容易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69190503/