簡體   English   中英

Javascript function 十六進制 十進制 二進制

[英]Javascript function Hex decimal Binary

我正在嘗試為十進制到十六進制到二進制轉換器編寫 function。 我的代碼工作幾乎完成,唯一的問題是,它給了我一個 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 中的本機

let x = 45;
console.log(x.toString(16));
console.log(x.toString(2));

對於數字 toString() 接受基數作為參數。 接受 2 到 36 之間的任何數字。

您正在取消循環的最后一部分兩次。 所以你在你的數組中得到了重復。 一旦在這里,在其他:

  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]);
}

我認為您可以刪除第二部分。

我認為你把這件事復雜化了

 const inNumber = document.querySelector('#in-number'), oResult = document.querySelector('#out-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' ], hexValue = [], binValue = []; document.querySelector('#bt-convert').onclick = e => { let N = inNumber.valueAsNumber hexValue.length = 0 binValue.length = 0 do { let d = N % 16 N = (Nd) / 16 hexValue.unshift( hex[d] ) binValue.unshift( bin[d] ) } while ( N > 0 ) oResult.textContent = ` number = ${inNumber.value}\n` + `hex value = ${hexValue.join('.')}\n` + `bin value = ${binValue.join('.')}\n` }
 <h5>Hex - Decimal - Binary converter. Please give a number</h5> <input type="number" id="in-number" value="1" min="0" > <button id="bt-convert">convert!</button> <br><br> <pre id="out-result"></pre>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM