3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
您需要將每個(gè)八位位組解析回?cái)?shù)字,然后使用該值來(lái)獲取字符,如下所示:
function bin2String(array) {
var result = "";
for (var i = 0; i < array.length; i++) {
result += String.fromCharCode(parseInt(array[i], 2));
}
return result;
}
bin2String(["01100110", "01101111", "01101111"]); // "foo"
// Using your string2Bin function to test:
bin2String(string2Bin("hello world")) === "hello world";
編輯:是的,您的當(dāng)前時(shí)間string2Bin可以寫(xiě)得更短:
function string2Bin(str) {
var result = [];
for (var i = 0; i < str.length; i++) {
result.push(str.charCodeAt(i).toString(2));
}
return result;
}
但是通過(guò)查看您鏈接的文檔,我認(rèn)為該setBytesParameter方法期望blob數(shù)組包含十進(jìn)制數(shù)字,而不是位字符串,因此您可以編寫(xiě)如下內(nèi)容:
function string2Bin(str) {
var result = [];
for (var i = 0; i < str.length; i++) {
result.push(str.charCodeAt(i));
}
return result;
}
function bin2String(array) {
return String.fromCharCode.apply(String, array);
}
string2Bin('foo'); // [102, 111, 111]
bin2String(string2Bin('foo')) === 'foo'; // true

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
只需apply將您的字節(jié)數(shù)組移至String.fromCharCode。例如
String.fromCharCode.apply(null, [102, 111, 111]) 等于'foo'。
警告:適用于小于65535的數(shù)組。MDN文檔在此處。

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
嘗試使用新的文本編碼API:
// create an array view of some valid bytes
let bytesView = new Uint8Array([104, 101, 108, 108, 111]);
console.log(bytesView);
// convert bytes to string
// encoding can be specfied, defaults to utf-8 which is ascii.
let str = new TextDecoder().decode(bytesView);
console.log(str);
// convert string to bytes
// encoding can be specfied, defaults to utf-8 which is ascii.
let bytes2 = new TextEncoder().encode(str);
// look, they're the same!
console.log(bytes2);
console.log(bytesView);
添加回答
舉報(bào)