我在使用typescript(angular 4项目)将arraybuffer转换为string时遇到困难。任何帮助都非常感谢。
代码输出显示字符串,但带有此符号 -
必需输出:
获取输出:
ab2str(arraybuffer) {
return String.fromCharCode.apply(null, new Uint8Array(arraybuffer));
}
答案 0 :(得分:2)
你应该尝试这样的事情:
function uintToString(uintArray) {
var encodedString = String.fromCharCode.apply(null, uintArray),
decodedString = decodeURIComponent(escape(encodedString));
return decodedString;
}
也许这会有所帮助:
https://ourcodeworld.com/articles/read/164/how-to-convert-an-uint8array-to-string-in-javascript
答案 1 :(得分:0)
这将允许unicode字符
ab2str(arraybuffer) {
return String.fromCharCode.apply(null, new Uint16Array(arraybuffer));
}
答案 2 :(得分:0)
从this reference,您可以查看以下内容:
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
function str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
此外,如果您can use使用TextEncoder
和TextEncoder
,请检查this answer。
答案 3 :(得分:0)
这对我有用。
我有一个SHA256哈希值,我需要将其转换为String。
function ab2str(hashBuffer) {
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
return hashHex;
}
答案 4 :(得分:0)
如果您遇到与Shifali singla(中文字符)相同的问题,只需更改以下内容即可:
返回String.fromCharCode.apply(null,新的Uint16Array(arraybuffer));
对此
返回String.fromCharCode.apply(null,新的Uint8Array(arraybuffer));
缓冲区可能在unit8array中而不是在unit16array中