我正在尝试将一些复杂的C#bitshifting代码转换为javascript(节点),但我在这种转换方面遇到了问题:
var d = false;
var k = 61;
var dd = 103;
uint r = 2924539136;
r |= unchecked((byte)(d ? (k + dd) : (k - dd)));
Console.WriteLine("result: " + r); // 2924539350
有没有办法将javascript中的(字节)转换复制到计算我正在寻找的值的位置,到目前为止我有这个,但它只会导致-42。
r |= (d ? (k + dd): (k - dd));
答案 0 :(得分:1)
var d = false;
var k = 61;
var dd = 103;
r = 2924539136;
b = (d ? (k + dd) : (k - dd))
x = (r | (b & 0xFF)) >>> 0
返回
x = 2924539350
诀窍是使用&0xFF
来屏蔽b
和>>>0
to convert a signed 32-bit number to unsigned中的所有低8位。