Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

parseInt not converting decimal to binary?

From my understanding the binary number system uses as set of two numbers, 0's and 1's to perform calculations.

Why does:

console.log(parseInt("11", 2)); return 3 and not 00001011? http://www.binaryhexconverter.com/decimal-to-binary-converter

like image 449
Robert Rocha Avatar asked Jun 29 '15 22:06

Robert Rocha


3 Answers

Use toString() instead of parseInt:

11..toString(2)
var str = "11";
var bin = (+str).toString(2);
console.log(bin)

According JavaScript's Documentation:

The following examples all return NaN:

parseInt("546", 2); // Digits are not valid for binary representations

like image 127
Walter Chapilliquen - wZVanG Avatar answered Oct 12 '22 11:10

Walter Chapilliquen - wZVanG


parseInt(number, base) returns decimal value of a number presented by number parameter in base base.

And 11 is binary equivalent of 3 in decimal number system.

var a = {};

window.addEventListener('input', function(e){
  a[e.target.name] = e.target.value;
  console.clear();
  console.log(  parseInt(a.number, a.base)  );
}, false);
<input name='number' placeholder='number' value='1010'>
<input name='base' placeholder='base' size=3 value='2'>
like image 38
Robo Robok Avatar answered Oct 12 '22 11:10

Robo Robok


As stated in the documentation for parseInt: The parseInt() function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems).

So, it is doing exactly what it should do: converting a binary value of 11 to an integer value of 3.

If you are trying to convert an integer value of 11 to a binary value than you need to use the Number.toString method:

console.log(11..toString(2)); // 1011
like image 15
Jason Cust Avatar answered Oct 12 '22 12:10

Jason Cust