使用 JavaScript 将二进制转换为文本

新手上路,请多包涵

如何使用 JavaScript 将二进制代码转换为文本?我已经让它将文本转换为二进制,但是有没有办法反过来呢?

这是我的代码:

 function convertBinary() {
  var output = document.getElementById("outputBinary");
  var input = document.getElementById("inputBinary").value;
  output.value = "";
  for (i = 0; i < input.length; i++) {
    var e = input[i].charCodeAt(0);
    var s = "";
    do {
      var a = e % 2;
      e = (e - a) / 2;
      s = a + s;
    } while (e != 0);
    while (s.length < 8) {
      s = "0" + s;
    }
    output.value += s;
  }
}
 <div class="container">
  <span class="main">Binary Converter</span><br>
  <textarea autofocus class="inputBinary" id="inputBinary" onKeyUp="convertBinary()"></textarea>
  <textarea class="outputBinary" id="outputBinary" readonly></textarea>
  <div class="about">Made by <strong>Omar</strong></div>
</div>

原文由 16.uk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

使用 toString(2) 转换为二进制字符串。例如:

 var input = document.getElementById("inputDecimal").value;
document.getElementById("outputBinary").value = parseInt(input).toString(2);

parseInt(input,10) 如果您知道输入应该是十进制。否则“0x42”的输入将被解析为十六进制而不是十进制。

编辑:只需重新阅读问题。要从二进制转换为文本,请使用 parseInt(input,2).toString(10)。

以上所有内容仅适用于数字。例如, 4 <-> 0100 。如果你想要 4 <->十进制52(它的ASCII值),使用 String.fromCharCode() (见 这个答案)。

编辑2:根据要求,一切都适合,试试这个:

 function BinToText() {
    var input = document.getElementById("inputBinary").value;
    document.getElementById("outputText").value = parseInt(input,2).toString(10);
}
...
<textarea autofocus class="inputBinary" id="inputBinary" onKeyUp="BinToText()"></textarea>
<textarea class="outputBinary" id="outputText" readonly></textarea>

如果您将 0100 放入 inputBinary ,您应该得到 4outputText 中测试)

原文由 cxw 发布,翻译遵循 CC BY-SA 3.0 许可协议

我最近使用 for 循环完成了一个练习。希望有用:

 function binaryAgent(str) {

var newBin = str.split(" ");
var binCode = [];

for (i = 0; i < newBin.length; i++) {
    binCode.push(String.fromCharCode(parseInt(newBin[i], 2)));
  }
return binCode.join("");
}
binaryAgent('01000001 01110010 01100101 01101110 00100111 01110100');
//translates to "Aren't"

编辑:在学习了更多 JavaScript 之后,我能够缩短解决方案:

 function binaryAgent(str) {

var binString = '';

str.split(' ').map(function(bin) {
    binString += String.fromCharCode(parseInt(bin, 2));
  });
return binString;
}
binaryAgent('01000001 01110010 01100101 01101110 00100111 01110100');
//translates to "Aren't"

原文由 BillyD 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题