前端js如何实现网络编程中的字符串转字节数组
方法一:通过循环,结合字符编码手动转换
function textToArrayBuffer(s) {
var i = s.length;
var n = 0;
var ba = new Array()
for (var j = 0; j < i;) {
var c = s.codePointAt(j);
console.log("codePointAt:" + c);
var d = s.charCodeAt(j);
console.log("charCodeAt:" + d);
if (c < 128) {
ba[n++] = c;
j++;
} else if ((c > 127) && (c < 2048)) {
ba[n++] = (c >> 6) | 192;
ba[n++] = (c & 63) | 128;
j++;
} else if ((c > 2047) && (c < 65536)) {
ba[n++] = (c >> 12) | 224;
ba[n++] = ((c >> 6) & 63) | 128;
ba[n++] = (c & 63) | 128;
j++;
} else {
ba[n++] = (c >> 18) | 240;
ba[n++] = ((c >> 12) & 63) | 128;
ba[n++] = ((c >> 6) & 63) | 128;
ba[n++] = (c & 63) | 128;
j += 2;
}
}
return new Uint8Array(ba).buffer;
}
方法二:借助js辅助方法
function strToArrayBuffer(s) {
const encoder = new TextEncoder()
const view = encoder.encode(s)
return new Uint8Array(view).buffer;
}
总结
- 方法二更简洁