JS 二进制类型的转换

请教各位大大,我们网络通信用了二进制格式,现在遇到两个问题:

1.在浏览器里面 string类型转换成Uint8Array类型可以用TextEncoder,在app环境里没有TextEncoder,要如何转?
2. 浏览器里websocket得到Blob类型,如何转换成Uint8Array类型?
3. 在app的js环境里的Uint8Array类型没有indexOf和slice 方法?

你需要这个 二进制数组 http://javascript.ruanyifeng.com/stdlib/arraybuffer.html

先把字符串转成二进制数组即可:

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;
}

这坟挖的,楼主恐怕都已经卖炒饭去了 :rofl:

哈哈哈哈哈哈哈哈

有JS专用的encoding.js库 找一下就是了 转来转去的就几行代码的事了

这才正解.