javascript - C# 按位异或计算在 R 或 NodeJS 中似乎很容易

标签 javascript c# r bit-manipulation

在 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/

相关文章:

使用 Windows API Code Pack Shell 扩展的 C# 应用程序不会关闭

html - 将带有线框的 3D 表面从 R 导出到 HTML

r - 给定类型 min_date 和 max_date 的聚合 ID 随时间变化

r - 合并两个数据框,坐标为 r

javascript - HTML 选择器多个,选项 "all"禁用所有其他选项

javascript - 如何使用键盘输入平滑地移动我的 JS 对象?

javascript - 如何触发 Flot Stacked Bar Chart 条形图上的点击事件?

php - 以编程方式检查图像元素颜色和颜色百分比

c# - SVN 凭据

c# - 如何在 OpenPOP 中立即删除邮件