Javascript 字到二进制到位数组

标签 javascript

我有这个代码//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/

相关文章:

javascript - 阻止子进程触发 Hammer.js 中的父事件

javascript - Jquery 代码无法在网站上运行,但可以在 fiddle 中运行

javascript - 如何在窗口调整大小时更新粘性菜单的 CSS 定位

javascript - 使用 JavaScript 从 HTML 按钮获取值

javascript - 页面呈现正确,但刷新多次

javascript - 为什么我的热图无法正确显示?

javascript - 有没有办法在这个 v-for 中正确使用索引而不出现错误

javascript - 响应式侧边栏选项卡和点击事件切换

javascript - 在 Meteor 中使用复杂的更新选择器进行原子操作

javascript - tinyMCE 头部样式