抱歉,我不擅长位转换。
我需要将十进制->十进制转换为低16位,作为此示例。

1:16777237 decimal = 1000015 hex
2:16 lower bits = 0015 hex (each digit in hexadecimal is 4 bits)
3: 0015 hex = 21 decimal  (21 is the result i need)


使用

(16777237).toString(16);


我可以得到1000015十六进制,我的问题是,如何获得较低的位作为即时消息,而不是那么强的位。等获取结果的最简便方法。

最佳答案

您可以使用11111111111111112应用位掩码,并使用bitwise AND获得结果。

              base 2             base 10   base 16
    -------------------------   --------   -------
    1000000000000000000010101   16777237   1000015
&   0000000001111111111111111      65535      ffff
-----------------------------   --------   -------
    0000000000000000000010101         21        15




console.log(16777237 & ((1 << 16) - 1));





另一个解决方案可能是,仅将remainder operator %与216一起使用。



console.log(16777237 % (1 << 16));

10-06 09:43