首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JavaScript将二进制文件转换为文本

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

Stack Overflow用户
提问于 2014-01-26 02:05:53
回答 21查看 93K关注 0票数 20

如何使用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;
  }
}
代码语言:javascript
复制
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<center>
  <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>
</center>

任何帮助都将不胜感激。

谢谢,奥马尔。

EN

回答 21

Stack Overflow用户

回答已采纳

发布于 2014-01-26 02:14:11

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

代码语言:javascript
复制
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() (请参阅this answer)。

编辑2:每个请求都适用于什么地方,试试这个:

代码语言:javascript
复制
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中,你应该会得到outputText中的4 (未经过测试)。

票数 28
EN

Stack Overflow用户

发布于 2016-03-01 12:18:38

类似于另一个答案,如果有人还在寻找这个。第一个拆分返回一个字符串列表,每个字符串代表一个binary character

然后,我们对每个字符串调用map,例如"11001111“或其他任何字符串,并返回嵌套了parseInt的元素的fromCharCode。然后将.join()放在总返回值上,它应该会起作用。

代码语言:javascript
复制
function binaryAgent3(str) {

  return str.split(" ").map(function(elem) {
    return String.fromCharCode(parseInt(elem, 2));
  }).join("")

}

原始问题:http://www.freecodecamp.com/challenges/binary-agents

票数 8
EN

Stack Overflow用户

发布于 2015-05-01 02:39:50

我遇到了同样的事情,我想要将二进制转换为文本,这就是我想出来的。

代码语言:javascript
复制
function binaryToWords(str) { 
    if(str.match(/[10]{8}/g)){
        var wordFromBinary = str.match(/([10]{8}|\s+)/g).map(function(fromBinary){
            return String.fromCharCode(parseInt(fromBinary, 2) );
        }).join('');
        return console.log(wordFromBinary);
    }
}

binaryToWords('01000011 01101111 01100110 01100110 01100101 01100101 00100000 01101001 01110011 00100000 01100011 01101111 01101100 01100100 ');
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21354235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档