1

複雑な C# ビットシフト コードを 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));
4

1 に答える 1

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

トリックは、 を使用して下位 8 ビットを&0xFF除くすべてをマスクし、符号付き 32 ビット数値を unsigned に変換することです。b>>>0

于 2013-07-25T08:11:34.570 に答える