将二进制转换为JavaScript? /将字符串转换为JavaScript?

时间:2015-06-30 11:14:04

标签: javascript binary

我创建了一个JavaScript测试文件并将其转换为二进制文件。

var newElement = document.createElement("h1");
var element = document.createTextNode("Hello World!");
newElement.appendChild(element);
document.body.appendChild(newElement);

转换为:

"01110110 01100001 01110010 00100000 01101110 01100101 01110111 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00100000 00111101 00100000 01100100 01101111 01100011 01110101 01101101 01100101 01101110 01110100 00101110 01100011 01110010 01100101 01100001 01110100 01100101 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00101000 00100010 01101000 00110001 00100010 00101001 00111011 00001101 00001010 01110110 01100001 01110010 00100000 01100101 01101100 01100101 01101101 01100101 01101110 01110100 00100000 00111101 00100000 01100100 01101111 01100011 01110101 01101101 01100101 01101110 01110100 00101110 01100011 01110010 01100101 01100001 01110100 01100101 01010100 01100101 01111000 01110100 01001110 01101111 01100100 01100101 00101000 00100010 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001 00100010 00101001 00111011 00001101 00001010 01101110 01100101 01110111 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00101110 01100001 01110000 01110000 01100101 01101110 01100100 01000011 01101000 01101001 01101100 01100100 00101000 01100101 01101100 01100101 01101101 01100101 01101110 01110100 00101001 00111011 00001101 00001010 01100100 01101111 01100011 01110101 01101101 01100101 01101110 01110100 00101110 01100010 01101111 01100100 01111001 00101110 01100001 01110000 01110000 01100101 01101110 01100100 01000011 01101000 01101001 01101100 01100100 00101000 01101110 01100101 01110111 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00101001 00111011"

在另一个JavaScript文件中,我已将此二进制代码转换为字符串,但代码未运行。

var output = "";
function convertBinary(str) { 
    if(str.match(/[10]{8}/g)){
        var js = str.match(/([10]{8}|\s+)/g).map(function(fromBinary){
            return String.fromCharCode(parseInt(fromBinary, 2) );
        }).join('');
        return console.log(js);
        output = js;
    }
}
var binary = convertBinary("01110110 01100001 01110010 00100000 01101110 01100101 01110111 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00100000 00111101 00100000 01100100 01101111 01100011 01110101 01101101 01100101 01101110 01110100 00101110 01100011 01110010 01100101 01100001 01110100 01100101 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00101000 00100010 01101000 00110001 00100010 00101001 00111011 00001101 00001010 01110110 01100001 01110010 00100000 01100101 01101100 01100101 01101101 01100101 01101110 01110100 00100000 00111101 00100000 01100100 01101111 01100011 01110101 01101101 01100101 01101110 01110100 00101110 01100011 01110010 01100101 01100001 01110100 01100101 01010100 01100101 01111000 01110100 01001110 01101111 01100100 01100101 00101000 00100010 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001 00100010 00101001 00111011 00001101 00001010 01101110 01100101 01110111 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00101110 01100001 01110000 01110000 01100101 01101110 01100100 01000011 01101000 01101001 01101100 01100100 00101000 01100101 01101100 01100101 01101101 01100101 01101110 01110100 00101001 00111011 00001101 00001010 01100100 01101111 01100011 01110101 01101101 01100101 01101110 01110100 00101110 01100010 01101111 01100100 01111001 00101110 01100001 01110000 01110000 01100101 01101110 01100100 01000011 01101000 01101001 01101100 01100100 00101000 01101110 01100101 01110111 01000101 01101100 01100101 01101101 01100101 01101110 01110100 00101001 00111011");

function init() {output};
init();

我知道问题出在function init() {output};,因为输出不是JavaScript,而是字符串。

我搜索过并搜索过,我发现如何将二进制文件转换为字符串,但我找不到将字符串转换为实际JavaScript的方法。

可以这样做吗?

5 个答案:

答案 0 :(得分:4)

您正在寻找eval。它在字符串上为您显式调用编译器并将其作为JavaScript运行。

eval("alert('hi');"); // evaluates the string and executes it as code

作为替代方案,您可以将代码视为函数体(带参数)并在其上调用the Function constructor

var converted = var binary = convertBinary("...");
eval(converted); // run code
var init = Function(converted); // create a function you can later call with the code

我不想进入为什么你以这种方式转换叮咬 - 如果它是一个好的和有趣的练习。请记住,文件已经是二进制文件,而文本文件只是我们如何查看其内容而不是它的内容实际内容是。

答案 1 :(得分:2)

您可以使用eval功能,如下所示:

eval(output)

Function constructor,如下所示:

var init = new Function(output) init()

答案 2 :(得分:1)

您可以使用new Function。 它将您的代码包装成如下函数:

var fn = new Function(output);
fn();

或更短:

new Function(output)();

相当于:

function(){
    var newElement = document.createElement("h1");
    var element = document.createTextNode("Hello World!");
    newElement.appendChild(element);
    document.body.appendChild(newElement);
}

答案 3 :(得分:0)

solved!

Binary to JavaScript Converter.

var bin = "some binary coded javascript"
var output = "";
function convertBinary(str) { 
    if(str.match(/[10]{8}/g)){
        var js = str.match(/([10]{8})/g).map(function(fromBinary){
            return String.fromCharCode(parseInt(fromBinary, 2) );
        }).join('');
        //console.log(js);
        output = js;
        return js;
    }
}
var binary = convertBinary(bin);
var init = new Function(output);
init();

答案 4 :(得分:0)

function binaryAgent(str) {
  //every ' ' split the string and put it into an array
  var arr = str.split(' ');

  //for every value in the array move it to base 2 (unicode) and convert it
  for (var i in arr) {
    var c = parseInt(arr[i], 2);
    arr[i] = String.fromCharCode(c);
  }

  return str = arr.join('');

}