Javascript 如何将对象转换为二进制字符串

Javascript 如何将对象转换为二进制字符串,javascript,browser,Javascript,Browser,以下是我如何使用pako压缩二进制字符串(字符代码大于255): var charData = xhr.responseText.split('').map(function(x){return x.charCodeAt(0);}); var binData = new Uint8Array(charData); var data = pako.deflate(binData, {level:"9"}); 下面是我如何将数据解压缩回来的: var data2 = pako.inflate(xh

以下是我如何使用pako压缩二进制字符串(字符代码大于255):

var charData = xhr.responseText.split('').map(function(x){return x.charCodeAt(0);});
var binData = new Uint8Array(charData);
var data = pako.deflate(binData, {level:"9"});
下面是我如何将数据解压缩回来的:

var data2 = pako.inflate(xhr.responseText);
现在,如何从这个对象获取JavaScript中的原始字符串? 我尝试过这样的方法:

A

B

C

for(变量i=0,l=data2.length;i
所有这些方法都以JavaScript字符串的形式提供与原始方法不同的数据。
当我将解压后的pako.inflate(xhr.responseText)保存到一个文件(使用带有.download的函数)时,解压后的文件与原始文件的字节完全相同(因此压缩和解压工作正常,无需任何字节修改).

我正试图做同样的事情,并找到了一种方法将对象转换为二进制字符串,反之亦然。我只是创建了一个两个函数,将JSON对象转换为二进制字符串,并将二进制字符串转换为JSON对象,即。covertObjectToBinary和convertBinaryToObject

let obj = {a:1}
function covertObjectToBinary(obj) {
    let output = '',
        input = JSON.stringify(obj) // convert the json to string.
    // loop over the string and convert each charater to binary string.
    for (i = 0; i < input.length; i++) {
        output += input[i].charCodeAt(0).toString(2) + " ";
    }
    return output.trimEnd();
}

function convertBinaryToObject(str) {
    var newBin = str.split(" ");
    var binCode = [];
    for (i = 0; i < newBin.length; i++) {
        binCode.push(String.fromCharCode(parseInt(newBin[i], 2)));
    }
    let jsonString = binCode.join("");
    return JSON.parse(jsonString)
}
console.log('covertObjectToBinary =>', covertObjectToBinary(obj))
console.log('convertBinaryToObject =>', convertBinaryToObject(covertObjectToBinary(obj)))  
让obj={a:1}
函数covertObjectToBinary(obj){
让输出=“”,
input=JSON.stringify(obj)//将JSON转换为字符串。
//循环字符串并将每个字符转换为二进制字符串。
对于(i=0;i',covertObjectToBinary(obj))
log('convertBinaryToObject=>',convertBinaryToObject(covertObjectToBinary(obj)))
String.fromCharCode.apply(null, data2);
for (var i = 0, l = data2.length; i < l; i++)
{
result += String.fromCharCode(parseInt(array[i], 2));
}
let obj = {a:1}
function covertObjectToBinary(obj) {
    let output = '',
        input = JSON.stringify(obj) // convert the json to string.
    // loop over the string and convert each charater to binary string.
    for (i = 0; i < input.length; i++) {
        output += input[i].charCodeAt(0).toString(2) + " ";
    }
    return output.trimEnd();
}

function convertBinaryToObject(str) {
    var newBin = str.split(" ");
    var binCode = [];
    for (i = 0; i < newBin.length; i++) {
        binCode.push(String.fromCharCode(parseInt(newBin[i], 2)));
    }
    let jsonString = binCode.join("");
    return JSON.parse(jsonString)
}
console.log('covertObjectToBinary =>', covertObjectToBinary(obj))
console.log('convertBinaryToObject =>', convertBinaryToObject(covertObjectToBinary(obj)))