1

我正在制作一个简单的程序,在其中进行数字系统转换测验,但我不知道如何在 Javascript 中生成二进制数。

用户选择他/她喜欢什么样的转换。(例如:二进制到十进制,十进制到十六进制等)它还询问用户想要多少问题,并在单击“进行测验”按钮后继续生成问题。

这就是我的程序的样子: 图片

它仍然是一个非常粗略的草稿,所以它看起来不太好哈哈

4

3 回答 3

4

您可以使用前缀为“0b”的二进制评估。你的二进制是字符串,但如果你想要十进制值,你只需使用 Number(binary) 类型转换。

function randomDigit() {
  return Math.floor(Math.random() * Math.floor(2));
}

function generateRandomBinary(binaryLength) {
  let binary = "0b";
  for(let i = 0; i < binaryLength; ++i) {
    binary += randomDigit();
  }
  return binary;
}

const b = generateRandomBinary(6);
console.log(b); // random binary number as a string ex: 0b101100
console.log(Number(b)); // decimal value of this random binary number ex: 44

您也可以使用前缀“0x”而不是“0b”来表示十六进制。

于 2020-07-16T11:49:53.037 回答
3

您可以使用该parseInt函数并传递一个基数:

parseInt('101010', 2);   // 42
parseInt('101010', 16);  //1052688
parseInt('101010', 10);  // 101010

要将任何数字转换为不同的基数,您可以使用toString(radix)

(42).toString(2);       // '101010'
(1052688).toString(16); // '101010'
(101010).toString(10);  // '101010'

如果输入来自一个字段,请确保parseInt在使用之前将其值转换为数字,通过.toString(radix)

于 2020-07-16T11:33:59.683 回答
1

此函数将返回指定为入口参数的最小和最大数字之间的随机二进制数输出。

function randomBinary(min, max) {
  return Math.floor(min + Math.random() * (max + 1 - min)).toString(2);
}


// test examples

console.log(randomBinary(0,200000));
console.log(randomBinary(100,500));
console.log(randomBinary(0,300000));

于 2020-07-16T11:33:39.883 回答