首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
华为云
V2EX  ›  Node.js

请教一个 nodejs ArrayBuffer 的问题。

  •  
  •   nodejserinwuhan · 86 天前 · 1620 次点击
    这是一个创建于 86 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文: http://javascript.ruanyifeng.com/stdlib/arraybuffer.html#toc11

    // ArrayBuffer 转为字符串,参数为 ArrayBuffer 对象 function ab2str(buf) { return String.fromCharCode.apply(null, new Uint16Array(buf)); }

    // 字符串转为 ArrayBuffer 对象,参数为字符串 function str2ab(str) { var buf = new ArrayBuffer(str.length * 2); // 每个字符占用 2 个字节 var bufView = new Uint16Array(buf); for (var i = 0, strLen = str.length; i < strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; }

    上面 var buf = new ArrayBuffer(str.length * 2); // 每个字符占用 2 个字节 这一句怎么理解,如果是汉字,不是有 3 个字节么?

    5 回复  |  直到 2018-08-25 11:36:16 +08:00
        1
    oswuhan   86 天前
    Unicode,了解一下。

    阮博主的另外一篇文章介绍了这个东西,http://www.ruanyifeng.com/blog/2014/12/unicode.html
        2
    nodejserinwuhan   86 天前
    @oswuhan 后来多方了解了一下,ArrayBuffer 里面存储的是 unicode 码点,码点的话两个字节够了。大于两个字节不支持
        3
    zbinlin   86 天前
    用来存储文本(字符串),要看是什么编码来的。
    文中也说了,用 UTF-16 编码,那就是两个字节就行了。
    如果是 utf8,就是 1-4 个字节。
        4
    rabbbit   86 天前
    utf-16 2-4 个字节
    U+0000-U+FFFF 占两节
    U+010000-\u10FFFF 占四节

    '𠀀'.length //2
        5
    lzvezr   85 天前 via Android
    不是有 buffer.from 嘛
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3612 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 03:04 · PVG 11:04 · LAX 19:04 · JFK 22:04
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1