【问题标题】:Decimal-Binary (JavaScript) Project十进制-二进制 (JavaScript) 项目
【发布时间】:2019-08-03 14:25:30
【问题描述】:

基本上是十进制-二进制转换。代码如下:

function convert() {
  var val = $("txtIn").value;
  if (val ===""){
    alert("No value entered for converstion.");
    return;
  }
  var cT = document.getElementsByName("tType");
  if (cT[0].checked) {
    //to Binary
    var dval = parseInt(val);
    if (isNaN(dval)) {
      alert("Input value is not a number!");
    } else if ((val % 1) !==0) {
      alert("Input value cannot include fraction or decimal");
    } else if (dval < 0) {
      alert("Input value must be a positive value.");
    } else {
      convertByArray(dval);
    }

  } ***else if (cT[1].checked)*** {
    //to decimal
    var bval = parseInt(val,2);
    if (isNaN(bval)) {
      alert("Input value is not a number!");
    } else if ((val % 1) !==0) {
      alert("Input value cannot include fraction or decimal");
    } else if (bval === 0 || dval === 1) {
      alert("Input value can only be 1s and 0s.");
    } else {
      convertByArray(dval);
    }
    //validity check, only 1s and 0s permitted, acknowledge spaces, cannot
    //be negative
  } else {
    alert("Please select a conversion type.");
  }
}

cT[1](二进制到十进制)是给我带来麻烦的部分。当我在 Firefox 中运行它时,它会返回输入,而不是所需的二进制到十进制。不知道我做错了什么。

dval 变量有自己的转换函数,所以想声明一个bval 并给出自己的如下,但仍然不是所需的输出。不知道我做错了什么:

function convertByArray(dval) {
  var rA = new Array();
  var r,i,j;

  i=0;
  while (dval > 0) {
    r = dval % 2; //remainder
    rA[i] =r;
    var nV = (dval - r) / 2;
    $("txtCalc").value = $("txtCalc").value +
      "Decimal " + dval + " divided by 2 = " + nV +
      " w/ Remainder of: " + r +"\n";
    i += 1;
    dval = nV;
  }
  for(j=rA.length-1; j>=0; j--) {
    $("txtOut").value = $("txtOut").value + rA[j];
  }
}

【问题讨论】:

    标签: javascript data-conversion


    【解决方案1】:

    不能真正遵循所有这些。如果您只是想将 bin 转换为 dec,只需要一种方法 parseInt(num, radix)。

    演示

    此演示可以转换十进制、二进制和十六进制

    const convert = (rxFrom, rxTo, number) => parseInt(number, rxFrom).toString(rxTo);
    
    let bin1 = 1101001;
    let bin2 = 10100001;
    let dec1 = 5641;
    let dec2 = 97;
    let hex1 = `ff96ca`;
    let hex2 = `25dc5b`;
    const bin2dec = convert(2, 10, bin1);
    const bin2hex = convert(2, 16, bin2);
    const dec2bin = convert(10, 2, dec1);
    const dec2hex = convert(10, 16, dec2);
    const hex2dec = convert(16, 10, hex1);
    const hex2bin = convert(16, 2, hex2);
    
    console.log(bin2dec);
    console.log(bin2hex);
    console.log(dec2bin);
    console.log(dec2hex);
    console.log(hex2dec);
    console.log(hex2bin);

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2012-06-11
      • 2014-10-30
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多