收藏
回答

微信小游戏中字符串怎么转为ArrayBuffer?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 需求 TextEncoder 客户端 6.7.3 2.3.0

如题,在HTML5规范中,可以使用Blob和TextEncoder。

但在微信小游戏中,Blob和TextEncoder均不支持。


但使用WebSocket时,又存在大量的字符串序列化需求。


想问下,大家都是怎么解决 字符串 到 二进制 的编码转换问题

回答关注问题邀请回答
收藏

1 个回答

  • 王妙端
    王妙端
    2023-03-30

    如果小程序中无法使用TextEncoder,可以考虑使用其他方法来将字符串转换为二进制,例如:

    1. 使用TextEncoder的替代方案,如Base64编码、UTF-8编码等。
    2. 自己实现字符串到二进制的转换函数。

    以下是一个简单的例子,将字符串转换为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);

    ``

    2023-03-30
    有用
    回复
登录 后发表内容