zoukankan      html  css  js  c++  java
  • 理解一下Buffer.from(), Buffer.alloc()

    buffer


    订阅专栏
    Buffer.from(), Buffer.alloc() 都是创建一个buffer, Buffer.from()从字符串或者数组创建一个buffer, Buffer.alloc()是创建一个指定大小的buffer。

    用法示例

    // 从字符串创建一个buffer
    const buffer1 = Buffer.from('regis');
    console.log(buffer1);
    // 输出结果
    <Buffer 72 65 67 69 73>

    // 从一个数组创建一个buffer
    const buffer2 = Buffer.from([1, 2, 3, 4]);
    console.log(buffer2);
    // 输出结果
    <Buffer 01 02 03 04>

    // 创建一个长度20的空buffer
    const buffer3 = Buffer.alloc(20);
    console.log(buffer3);
    // 输出结果
    <Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
    buffer.writeInt8()

    继续上面的代码,buffer2的值为

    <Buffer 01 02 03 04>

    // 向buffer2的buffer中写入数字12,类型为int8,(int8 只占用两位),从图中第1个位置写入,
    buffer2.writeInt8(12, 1);
    // 写入后的结果,与上面比较,只有第1个位置的值换为0c, 其余的值因为没有写入数据,所以不变
    console.log(buffer2);
    <Buffer 01 0c 03 04>

    // 向buffer2中写入数字512,并且写入位置从第2个位置写入, 因为是Int16,所以需要占用两位,512的十六进制数字为 02 00 2*16^2=512
    buffer2.writeInt16BE(512, 2);
    console.log(buffer2);
    // 输出结果
    <Buffer 01 0c 02 00>
    // 注意writeInt16BE 与 writeInt16LE的区别
    // 高低位的顺序不一样,正好相反, BE的高位在左侧, 而LE的高位在右侧
    buffer2.writeInt16LE(512, 2);
    console.log(buffer2);
    // 输出结果
    <Buffer 01 0c 00 02>

    简单记录一下,由于初学,还需要大神指教。

  • 相关阅读:
    基本配置+路由系统+模板
    ORM之SQLAlchemy
    web应用+250斗笔式模拟框架(socket、pymysql、jinja2)
    Leetcode56. Merge Intervals合并区间
    Leetcode50. Pow(x, n)(快速幂)
    Leetcode43. Multiply Strings字符串相乘(大数相乘)
    (转)Json在Unity中的简单使用
    Leetcode49. Group Anagrams字母异位词分组
    Leetcode48. Rotate Image旋转图像
    Leetcode47. Permutations II全排列2
  • 原文地址:https://www.cnblogs.com/onesea/p/15268029.html
Copyright © 2011-2022 走看看