小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如题,在HTML5规范中,可以使用Blob和TextEncoder。
但在微信小游戏中,Blob和TextEncoder均不支持。
但使用WebSocket时,又存在大量的字符串序列化需求。
想问下,大家都是怎么解决 字符串 到 二进制 的编码转换问题
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
如果小程序中无法使用TextEncoder,可以考虑使用其他方法来将字符串转换为二进制,例如:
以下是一个简单的例子,将字符串转换为UTF-8编码的二进制数据
function stringToUtf8ByteArray(str) {
const result = [];
for (let i = 0; i < str.length; i++) {
let code = str.charCodeAt(i);
if (code <= 0x7f) {
result.push(code);
} else if (code <= 0x7ff) {
result.push((code >> 6) | 0xc0);
result.push((code & 0x3f) | 0x80);
} else if (code <= 0xffff) {
result.push((code >> 12) | 0xe0);
result.push(((code >> 6) & 0x3f) | 0x80);
} else {
result.push((code >> 18) | 0xf0);
result.push(((code >> 12) & 0x3f) | 0x80);
}
return result;
const str = "hello world";
const utf8Bytes = stringToUtf8ByteArray(str);
console.log(utf8Bytes);
``
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
如果小程序中无法使用TextEncoder,可以考虑使用其他方法来将字符串转换为二进制,例如:
以下是一个简单的例子,将字符串转换为UTF-8编码的二进制数据
function stringToUtf8ByteArray(str) {
const result = [];
for (let i = 0; i < str.length; i++) {
let code = str.charCodeAt(i);
if (code <= 0x7f) {
result.push(code);
} else if (code <= 0x7ff) {
result.push((code >> 6) | 0xc0);
result.push((code & 0x3f) | 0x80);
} else if (code <= 0xffff) {
result.push((code >> 12) | 0xe0);
result.push(((code >> 6) & 0x3f) | 0x80);
result.push((code & 0x3f) | 0x80);
} else {
result.push((code >> 18) | 0xf0);
result.push(((code >> 12) & 0x3f) | 0x80);
result.push(((code >> 6) & 0x3f) | 0x80);
result.push((code & 0x3f) | 0x80);
}
}
return result;
}
const str = "hello world";
const utf8Bytes = stringToUtf8ByteArray(str);
console.log(utf8Bytes);
``