在javascript中使用无符号32位整数进行位移/类型转换?

时间:2013-07-25 07:47:52

标签: c# javascript types

我正在尝试将一些复杂的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));

1 个答案:

答案 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位。