javascript - 将二进制文件转换为 JavaScript?/将字符串转换为 JavaScript?

标签 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 的方法。

这可以做到吗?

最佳答案

您正在寻找 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

我不想深入探讨为什么您要以这种方式转换蜇针 - 如果这是一种练习,那很好而且很有趣。请记住,文件总是二进制的文本文件只是我们如何查看其内容的问题,而不是它的内容实际内容是。

关于javascript - 将二进制文件转换为 JavaScript?/将字符串转换为 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136729/

相关文章:

javascript - 当我在页面中间或页面末尾时如何使用 Angular 2 将页面滚动到顶部

java - 字符串的二进制加法

javascript - parseInt() 不考虑前导零,即使有基数

将 float 1864.78 转换为二进制和 IEEE 格式

c++ - 斐波那契数列,二分查找

javascript - 向左绘制时 d3 行转换失败

javascript - 如何将输入转换为小数点后两位?

javascript - 如何将自己的 javascript 文件添加到 nanoc?

python - 在 Python 中将一长串位作为半字节转换为十进制

javascript - 使用另一个函数 JS 更改构造函数的值