2013-07-25 92 views
1

我試圖將一些複雜的C#代碼bitshifting成JavaScript(節點),但我在使用這種轉換爲例問題:在javascript中使用無符號32位整數進行位移/類型轉換?

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
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掩蓋所有,但較低的8位中b>>>0to convert a signed 32-bit number to unsigned

相關問題