首页 > 解决方案 > Javascript函数十六进制十进制二进制

问题描述

我正在尝试为十进制到十六进制到二进制转换器编写一个函数。我的代码工作几乎完成,唯一的问题是,它给了我一个 Value 两次。例如,如果我想将 45 转换为十六进制和十进制,答案应该是 --->>!!!! 45 --> 2,D --> 0010,1101

我得到的是:45 --> 2,2,D --> 0010,0010,1101

我对 Javascript 非常陌生,现在尝试解决这个小问题两天。请帮我找出我正在做的错误谢谢。我的代码是::

a = prompt("Hex - Decimal - Binary converter. Please give a number : ");
var z = a;
document.write("Number = ", a);
document.write("<br/>");
arr1 = []; // To save quotient (not really required)
arr2 = []; // To save Remainder (not really required)
arr3 = []; // To save Hex values (required to display the end result)
arr4 = []; // To save Binary values (required to display the end result)
hex = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
bin = [ '0000'       , '0001'       , '0010'       , '0011'
      , '0100'       , '0101'       , '0110'       , '0111'
      , '1000'       , '1001'       , '1010'       , '1011'
      , '1100'       , '1101'       , '1110'       , '1111'
      ];
//var a = 14;
while (a > 15) {
  b = a / 16;
  c = Math.floor(b);
  d = a % 16;
  arr2.unshift(d);
  arr3.unshift(hex[d]);
  arr4.unshift(bin[d]);

  if (c > 15) {
    arr1.push(c);
  } else {
    arr1.push(c);
    arr2.unshift(c);
    arr3.unshift(hex[c]);
    arr4.unshift(bin[c]);
  }
  a = c;
}
if (a < 16) {
  arr2.unshift(a);
  arr3.unshift(hex[a]);
  arr4.unshift(bin[a]);
}
//document.write("");
console.log("Answer = ", arr1, ", ");
//document.write("Answer = ", arr1,", ");
console.log("Answer = ", arr2, ", ");
//document.write("Answer = ", arr2,", ");
console.log("Answer = ", arr3, ", ");
document.write(
  "The given number ",
  z,
  " is in Hexa decimal system : ",
  arr3,
  " "
);
document.write("<br/>");
console.log("Answer = ", arr4, ", ");
document.write("The given number", z, " is in Binary system : ", arr4, " ");

标签: javascript

解决方案


您正在取消循环的最后一部分两次。所以你在你的数组中得到了重复。一旦在这里,在其他:

  if (c > 15) {
    arr1.push(c);
  } else {
    arr1.push(c);
    arr2.unshift(c);
    arr3.unshift(hex[c]);
    arr4.unshift(bin[c]);
  }

然后在这里:

if (a < 16) {
  arr2.unshift(a);
  arr3.unshift(hex[a]);
  arr4.unshift(bin[a]);
}

我认为您可以删除第二部分。


推荐阅读