function code2utf8(uni) { let uni2 = uni.toString(2) if (uni < 128) { return uni.toString(16); } else if (uni < 2048) { uni2 = ('00000000000000000' + uni2).slice(-11); const s1 = parseInt("110" + uni2.substring(0, 5), 2); const s2 = parseInt("10" + uni2.substring(5), 2); return s1.toString(16) + ',' + s2.toString(16) } else { uni2 = ('00000000000000000' + uni2).slice(-16); const s1 = parseInt('1110' + uni2.substring(0, 4),2 ); const s2 = parseInt('10' + uni2.substring(4, 10), 2 ); const s3 = parseInt('10' + uni2.substring(10), 2); return s1.toString(16) + ',' + s2.toString(16) + ',' + s3.toString(16) } } function string2buffer(str) { let val = "" for (let i = 0; i < str.length; i++) { val += ',' + code2utf8(str.charCodeAt(i)) } val += ',00'; console.log(val); // 将16进制转化为ArrayBuffer return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function (h) { return parseInt(h, 16) })).buffer }