zoukankan      html  css  js  c++  java
  • node 基础API(Buffer)

    创建Buffer:

    // 创建长度为10的Buffer
    Buffer.alloc(10);
    // <Buffer 00 00 00 00 00 00 00 00 00 00>
    
    // 用1填充
    Buffer.alloc(5,1);
    // <Buffer 01 01 01 01 01>
    
    // 创建一个包含[0x1,0x2,0x3]的Buffer
    Buffer.from([1,2,3])
    // <Buffer 01 02 03>
    
    // 使用字符串  utf8格式
    Buffer.from('test')
    // <Buffer 74 65 73 74>
    
    // 使用base64格式
    Buffer.from('test','base64')
    <Buffer b5 eb 2d>

    Buffer的一些方法和属性

    // 占的字节数
    Buffer.byteLength('test');    // 4
    Buffer.byteLength('你好');    // 6
    
    // 判断是否是Buffer对象
    Buffer.isBuffer({});    // false
    Buffer.isBuffer(Buffer.from([1,2,3]));    // true
    
    // 拼接
    const buf1=Buffer.from('this ');
    const buf2=Buffer.from('is ');
    const buf3=Buffer.from('a ');
    const buf4=Buffer.from('test ');
    const buf5=Buffer.from('! ');
    
    const buf=Buffer.concat([buf1,buf2,buf3,buf4,buf5]);
    console.log(buf.toString());
    // this is a test !
    
    // 长度
    const buf=Buffer.from('this is a buffer');
    console.log(buf.length);    // 15
    
    // toString()    base64格式
    buf.toString('base64');    // dGhpcyBpcyBhIGJ1ZmZlcg==
    
    // 填充
    const buf3=Buffer.allocUnsafe(10);
    console.log(buf3);
    console.log(buf3.fill(5,3,7));
    // <Buffer c8 fc 88 6e e5 01 00 00 00 00>
    // <Buffer c8 fc 88 05 05 05 05 00 00 00>
    
    // 比较Buffer里面的内容是否相等
    const buf4 = Buffer.from('test');
    const buf5 = Buffer.from('test');
    const buf6 = Buffer.from('test1');
    
    console.log(buf4.equals(buf5));    // true
    console.log(buf4.equals(buf6));    // false
    
    // indexOf
    console.log(buf4.indexOf('es'));     // 1
    console.log(buf4.indexOf('aaa'));    // -1

    Buffer decode

    // 每隔5个字节打印字符,由于每个中文占3个字节,所以会出现乱码
    const buf=Buffer.from('中文字符串!');
    
    for(let i=0;i<buf.length;i+=5){
        const b=Buffer.allocUnsafe(5);
        buf.copy(b,0,i);
        console.log(b.toString());
    }
    结果:
    中�
    �字�
    ��串
    !�
    
    // 所以需要借助 string_decoder  字符串解码器
    const StringDecoder=require('string_decoder').StringDecoder;
    const decoder=new StringDecoder('utf8');
    
    const buf=Buffer.from('中文字符串!');
    
    for(let i=0;i<buf.length;i+=5){
        const b=Buffer.allocUnsafe(5);
        buf.copy(b,0,i);
        console.log(decoder.write(b));
    }
    结果:
    中
    文字
    符串
    !�
  • 相关阅读:
    powerdesigner反向MySQL5.1数据库 生成ER图
    Sublime Text 2 使用心得
    MyEclipse老是弹出problem occurred窗口
    Jquery ui Datepicker 的汉化
    jsp 中的getParameter和getAttribute
    jquery easyui
    struts2 annotation方式的下载(实用版)
    Sublime Text 2
    struts2框架搭建的三个步骤
    任意角度的平行四边形的碰撞检测原理
  • 原文地址:https://www.cnblogs.com/jingouli/p/node.html
Copyright © 2011-2022 走看看