javascript中带有无符号32位整数的位移位/类型转换

Bit shifting/type casting in javascript with unsigned 32 bit integers?

本文关键字:类型转换 整数 32位 无符号 javascript      更新时间:2023-09-26

我正试图将一些复杂的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));
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中除低8位之外的所有位,以将有符号的32位数字转换为无符号数字。