Javascript - 将整数转换为位数组

Dim*_*imC 30 javascript integer bits

我试图在javascript中将一个整数(我知道将介于0和32之间)转换为0和1的数组.我环顾四周但找不到有用的东西..

所以,如果我有一个22的整数(二进制10110),我想访问它:

Bitarr[0] = 0
Bitarr[1] = 1
Bitarr[2] = 1
Bitarr[3] = 0
Bitarr[4] = 1
Run Code Online (Sandbox Code Playgroud)

有什么建议?非常感谢

nob*_*ody 65

转换为基数2:

var base2 = (yourNumber).toString(2);
Run Code Online (Sandbox Code Playgroud)

访问字符(位):

base2[0], base2[1], base2[3], etc...
Run Code Online (Sandbox Code Playgroud)

  • 太棒了,这很好用!我一直在研究移位操作,但这要快得多。非常感谢!! (3认同)
  • 应该注意的是,结果字符串不以前置零填充。例如,如果您想要一个带有前导零的8位字符串,则可以使用`(“” 00000000“ + number.toString(2))。slice(-8)`。 (2认同)
  • 原始问题要求从右到左解析拆分字符串:`var base2 = (yourNumber).toString(2).reverse()` (2认同)

Gol*_*rol 8

var a = 22;
var b = [];

for (var i = 0; i < 5; i++)
  b[i] = (a >> i) & 1;

alert(b);
Run Code Online (Sandbox Code Playgroud)

假设5位(似乎来自你的问题),那么0 <= a < 32.如果你喜欢你可以做5更大的,upto 32(JavaScript中的bitshifting工作32位整数).


Kam*_*ski 8

最短 (ES6)

用零填充最后一位的最短(32 个字符)版本。我假设这n是你的数字,b是基数(输出位数):

[...Array(b)].map((x,i)=>n>>i&1)
Run Code Online (Sandbox Code Playgroud)

[...Array(b)].map((x,i)=>n>>i&1)
Run Code Online (Sandbox Code Playgroud)