我有这个代码//Fiddle : https://jsfiddle.net/7buscnhw/
// Word to bits func
function dec2bin(dec) {
return (dec >>> 0).toString(2);
}
// binary to bit array
function bin2array(bin) {
let Bitarr = []
for(let i = 0; i < bin.length; ++i)
Bitarr[i] = (bin >> i) & 1;
return Bitarr;
}
R24011 = dec2bin(10);
Bits = bin2array(R24011);
msg = {
R24011: R24011,
BitArray: Bits
}
console.log(msg)
它正确地以二进制形式输出 1010(十),但是当我将其插入数组时,我得到 [0,1,0,0]
我确信这会是一些愚蠢的事情,但我无法弄清楚我做错了什么。
最佳答案
您传递 bin
(这是一个字符串 "1010"
)并对它应用 >>
,这使得 Javascript 将其转换为以 10 为基数的数字,结果为 1010
(一千一十),即二进制 1111110010
。然后,您再次将该值转换为二进制,仅使用四位并以相反的顺序,结果是 [0,1,0,0]
如果您想将数字(不是字符串)转换为数组位(并避免内置),您可以这样做:
function num2bits(number) {
let Bitarr = []
while (number) {
Bitarr.unshift(number & 1);
number >>= 1
}
return Bitarr;
}
console.log(num2bits(10))
使用内置函数,这就像简单的
bits = [...yourNumber.toString(2)].map(Number)
关于Javascript 字到二进制到位数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68304050/