JavaScript将十进制转换为二进制

Rob*_*cha 29 javascript binary

根据我的理解,二进制数系统使用两个数字的集合,0和1来执行计算.

为什么:

console.log(parseInt("11", 2));回来3而不是00001011http://www.binaryhexconverter.com/decimal-to-binary-converter

Wal*_*anG 84

使用toString()而不是parseInt:

11..toString(2)
Run Code Online (Sandbox Code Playgroud)
var str = "11";
var bin = (+str).toString(2);
console.log(bin)
Run Code Online (Sandbox Code Playgroud)

根据JavaScript的文档:

以下示例均返回NaN:

parseInt("546", 2);// 数字对二进制表示无效

  • 我的问题很酷的解决方案.`new Number(str).toString(2)`做同样的事情,虽然会更明确.作为解释:它是`Number`的toString方法,它接受一个基数并以不同的表示形式输出数字:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString - `+`运算符将字符串转换为数字. (2认同)
  • 对于那些可能对..和。感到困惑的人,请在以下网址查看kennebec和liuwenzhuang的答案:/sf/ask/294772621/ -javascript。当使用整数(例如`11..toString(2)`)时,第一个点实际上是小数点。 (2认同)

Rob*_*bok 31

parseInt(number, base)返回base中参数表示的数字的十进制值.numberbase

并且11是十进制数系统中的二进制等价3.

var a = {};

window.addEventListener('input', function(e){
  a[e.target.name] = e.target.value;
  console.clear();
  console.log(  parseInt(a.number, a.base)  );
}, false);
Run Code Online (Sandbox Code Playgroud)
<input name='number' placeholder='number' value='1010'>
<input name='base' placeholder='base' size=3 value='2'>
Run Code Online (Sandbox Code Playgroud)

  • 即二进制11是十进制3.;-) (5认同)
  • 起初,当我阅读文档时,第一行指出:“函数解析一个字符串参数并返回一个整数”而不是“返回十进制”它只在描述中进一步说明文档。不过谢谢。 (2认同)

Jas*_*ust 13

如以下文档parseInt中所述:parseInt()函数解析字符串参数并返回指定基数的整数(数学系统中的基数).

因此,它正在做它应该做的事情:将二进制值转换为11整数值3.

如果您尝试将整数值转换11为二进制值,则需要使用该Number.toString方法:

console.log(11..toString(2)); // 1011
Run Code Online (Sandbox Code Playgroud)

  • @RobertRocha不用担心,因为这是一个容易犯的错误:-)一个简单的问题我问自己,当涉及到这样的事情时,如果我可能是第一个注意到某些文档错误的人.紧接着就是快速评估我对它的解释有多自信.通常在向自己证明我是对的时候我会学到新的东西(而且我以前的理解也是不准确的).:-) (2认同)

ala*_*yab 6

.toString(2)应用于Number类型时有效。

255.toString(2)      // syntax error
"255".toString(2);   // 255

var n=255;
n.toString(2);      // 11111111

// or in short
Number(255).toString(2) // 11111111
// or use two dots so that the compiler does
// mistake with the decimal place as in 250.x
255..toString(2)        // 11111111
Run Code Online (Sandbox Code Playgroud)

  • 您需要用括号将原始类型包装起来以使其工作:`(255).toString(2)` (3认同)