JS字符串转字节有两种方式
1.重写底层方法.
function stringToByte(str) {
var len, c;
len = str.length;
var bytes = [];
for(var i = 0; i < len; i++) {
c = str.charCodeAt(i);
if(c >= 0x010000 && c <= 0x10FFFF) {
bytes.push(((c >> 18) & 0x07) | 0xF0);
bytes.push(((c >> 12) & 0x3F) | 0x80);
bytes.push(((c >> 6) & 0x3F) | 0x80);
bytes.push((c & 0x3F) | 0x80);
} else if(c >= 0x000800 && c <= 0x00FFFF) {
bytes.push(((c >> 12) & 0x0F) | 0xE0);
bytes.push(((c >> 6) & 0x3F) | 0x80);
bytes.push((c & 0x3F) | 0x80);
} else if(c >= 0x000080 && c <= 0x0007FF) {
bytes.push(((c >> 6) & 0x1F) | 0xC0);
bytes.push((c & 0x3F) | 0x80);
} else {
bytes.push(c & 0xFF);
}
}
return new Int8Array(bytes);
}
思路就是将字符串的每个字符进行二进制的位移处理, 然后添加到数组中, 再由Int8Array这种有符号的byte类型的数组作为参数接收形成新的数据, 返回值可作为参数直接用于网络传输.
2.直接使用JS对象.
这种方法比较简单了, 直接使用blob对象
var blob = new Blob(['这是一个二进制的数据']);
这样同样可以直接当作参数用于网络传输.