请教各位大大,我们网络通信用了二进制格式,现在遇到两个问题:
1.在浏览器里面 string类型转换成Uint8Array类型可以用TextEncoder,在app环境里没有TextEncoder,要如何转?
2. 浏览器里websocket得到Blob类型,如何转换成Uint8Array类型?
3. 在app的js环境里的Uint8Array类型没有indexOf和slice 方法?
请教各位大大,我们网络通信用了二进制格式,现在遇到两个问题:
1.在浏览器里面 string类型转换成Uint8Array类型可以用TextEncoder,在app环境里没有TextEncoder,要如何转?
2. 浏览器里websocket得到Blob类型,如何转换成Uint8Array类型?
3. 在app的js环境里的Uint8Array类型没有indexOf和slice 方法?
先把字符串转成二进制数组即可:
function str2bytes(str){
var bytes = [];
for (var i = 0, len = str.length; i < len; ++i) {
var c = str.charCodeAt(i);
var byte = c & 0xff;
bytes.push(byte);
}
return bytes;
}
可以用这个方法把字符串转为Uint8Array:
function str2bytes(str){
const encodedURI = encodeURIComponent(str);
const binStr = encodedURI.replace(/%([0-9A-F]{2})/g, (_, hex) => {
return String.fromCharCode(parseInt(hex, 16));
});
const bytes = new Uint8Array(binStr.length);
for (let i = 0; i < binStr.length; i++) {
bytes[i] = binStr.charCodeAt(i);
}
return bytes;
}
这坟挖的,楼主恐怕都已经卖炒饭去了 
哈哈哈哈哈哈哈哈
有JS专用的encoding.js库 找一下就是了 转来转去的就几行代码的事了
这才正解.