@arramaga

Перевод из шестнадцатеричной в двоичную систему?

<script>
	var num1 = String(window.prompt("Введите "))
    //otvet = num1.split( /(?=(?:\d{2})+$)/ );
    var otvet = [];
    for(i = 0; i < num1.length; i+=2){
        otvet[i] = num1.substring(i, i+2);
        
    }
	console.log(otvet);
    if(otvet[0]=="26"){
        x = parseInt(otvet[1], 16).toString(2);
        console.log(x); 
    }else{document.write("Значение не является пакетом")}
	</script>


Юзер вводит значение типа 26ff12, оно разбивается на массив 26, ff, 12. Если первое значение массива равно 26, то ff должно быть переведено в двоичную систему.

Как из FF получить 11111111?
Прошу заметить, что юзер может ввести и 26f245
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 3
@GeneD88
QA
Нагуглилось:

(function(){

var ConvertBase = function (num) {
return {
from : function (baseFrom) {
return {
to : function (baseTo) {
return parseInt(num, baseFrom).toString(baseTo);
}
};
}
};
};
ConvertBase.hex2bin = function (num) {
return ConvertBase(num).from(16).to(2);
};

this.ConvertBase = ConvertBase;

})(this);
Ответ написан
Комментировать
@AltQ
Если нужно разбивать строку на массив:
for (i = 0; i < num1.length; i += 2) {otvet[i / 2] = num1.substr(i, 2)}

Но конкретно в этом случае проще сразу же работать с подстроками:
if (num1.substr(0, 2) == "26") {console.log(parseInt(num1.substr(2, 2), 16).toString(2))}
Ответ написан
Комментировать
@arramaga Автор вопроса
Всем спасибо, ответ получил. Был неправильно записан цикл.
for(var i = 0; i < num1.length/2; i++){
        otvet[i] = num1.substring(i*2, i*2+2); 
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы