如何使用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;
}
}
<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>
任何帮助都将不胜感激。
谢谢,奥马尔。
发布于 2014-01-26 02:14:11
使用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()
(请参阅this answer)。
编辑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
中,你应该会得到outputText
中的4
(未经过测试)。
发布于 2016-03-01 12:18:38
类似于另一个答案,如果有人还在寻找这个。第一个拆分返回一个字符串列表,每个字符串代表一个binary character。
然后,我们对每个字符串调用map,例如"11001111“或其他任何字符串,并返回嵌套了parseInt的元素的fromCharCode。然后将.join()放在总返回值上,它应该会起作用。
function binaryAgent3(str) {
return str.split(" ").map(function(elem) {
return String.fromCharCode(parseInt(elem, 2));
}).join("")
}
发布于 2015-05-01 02:39:50
我遇到了同样的事情,我想要将二进制转换为文本,这就是我想出来的。
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 ');
https://stackoverflow.com/questions/21354235
复制相似问题