Подтвердить что ты не робот

Преобразование строк в Javascript (десятичное в двоичное)

Новичок здесь! Интересно, почему следующее преобразование завершается неудачно!

var num= prompt("Enter num"); 
alert(num.toString(2));

Если d входной сигнал 32. Я также получаю сообщение 32 как d:/

4b9b3361

Ответ 1

попробовать

(+num).toString(2)

Number(num).toString(2)

или

parseInt(num, 10).toString(2)

Любой из них должен работать лучше для вас.

Проблема заключается в том, что метод toString объектов javascript Number переопределяет метод toString объектов Object, чтобы принять необязательное основание в качестве аргумента для обеспечения требуемой функциональности. Объект String не переопределяет метод Object toString, поэтому любые переданные аргументы игнорируются.

Более подробную информацию об этих объектах см. в документах в Mozilla:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toString https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String#Methods

или школы W3:

http://www.w3schools.com/jsref/jsref_tostring_number.asp http://www.w3schools.com/jsref/jsref_obj_string.asp

Ответ 2

С помощью этой функции вы можете указать длину вывода.

Например, decbin(7,4) создает 0111.

function decbin(dec,length){
  var out = "";
  while(length--)
    out += (dec >> length ) & 1;    
  return out;  
}

демо

Ответ 3

/**  Преобразование десятичного числа в двоичный  **/

var toBinary = function(decNum){
    return parseInt(decNum,10).toString(2);
}

/** Преобразование двоичного числа в десятичное  **/

var toDecimal = function(binary) {
    return parseInt(binary,2).toString(10);
}

Наконец, используйте его

var num= prompt("Enter num"); 
alert(toBinary(num));

Ответ 4

Вот мое решение, которое не использует parseInt, а скорее метод, который показывает логику преобразования десятичного числа в двоичный.

Этот метод печатает бит в массив, который вы можете позже распечатать, если хотите:

var number = 156;
var converted = [];

while(number>=1) {
    converted.unshift(number%2);
    number = Math.floor(number/2);
}

Преобразованный массив теперь будет выглядеть следующим образом:

[1,0,0,1,1,1,0,0]

который, конечно, преобразуется обратно в 156.

Ответ 5

Сначала переведите его в целое число. На данный момент вы преобразовываете строку в это двоичное представление.

num = +num;