zoukankan      html  css  js  c++  java
  • Buffer对象的总结

    1.首先记录下php关于字符串长度的统计

    <?php
    echo strlen('0123456789');//10
    echo '<br>';
    echo strlen('一二三四五六七八九十');//30
    echo '<br>';
    echo mb_strlen('一二三四五六七八九十','utf-8');//10

     2.Buffer对象为16进制的两位数,即FF 0-225;

    var str='王炜';
    var buf=new Buffer(str,'utf-8');
    console.log(buf);//<Buffer e7 8e 8b e7 82 9c>
    var str='hello,王炜';
    var buf=new Buffer(str,'utf-8');
    console.log(buf);//<Buffer 68 65 6c 6c 6f 2c e7 8e 8b e7 82 9c>

    可以看出中文utf-8占3个元素,字母和半角符号均占1个元素


    3.BUffer可以调用length方法,获取长度,也可以下标获取,每个元素都是0-225之间的随机数

    var buf=new Buffer(10);//生成长度为10的buffer
    buf[1]=22.23;
    console.log(buf[1]);//22 如果是小数或舍弃小数部分
    var buf=new Buffer(10);//生成长度为10的buffer
    console.log(buf.length);//10
    console.log(buf[8])//0  默认都是0
    buf[1]=257;
    console.log(buf[1])//0 大于等于256会在原数基础上减256
    buf[2]=-1;
    console.log(buf[2])//如果小于0 会在原数基础上加256

    4. Buffer()对象以8kb来界定一个对象是大对象还是小对象

    5.BUffer()目前支持的字符串转换 ASCII UTF-8 UTF-16LE/UCS-2 Base64 Binary Hex

    new Buffer(str,[encoding]) 默认为UTF-8

    buf.write(string,[offset],[length],[encoding])每一个单元可以写入指定的编码 

    buf.toString([encoding],[start],[end])将buffer转换为指定的类型 可以设置转换范围

    var buf=new Buffer(10);//生成长度为10的buffer
    buf.write('王炜','utf-8');
    console.log(buf)//<Buffer e7 8e 8b e7 82 9c 00 00 00 00> 汉字以utf-8写入buf
    console.log(buf.toString('hex'))//e78e8be7829c00000000 buf以'hex'格式转为字符串
    var buf1=new Buffer(10);
    //字符串以'hex'写入buf1再以utf-8转为字符串
    buf1.write(buf.toString('hex'),'hex')
    console.log(buf1.toString('utf-8'));//王炜 

     6.Buffer.isEncoding(encoding)判断buffer是否支持该字符编码

     当然,不支持的可以采用iconv(c++写的)和iconv-lite(采用js编写,性能好一点)模块转换

    console.log(Buffer.isEncoding('utf-8'))//true
    console.log(Buffer.isEncoding('hex'))//true
    console.log(Buffer.isEncoding('GBK'))//false

    关于iconv-lite

    const iconv=require('iconv-lite');
    var buf=new Buffer('我是王炜','utf-8');
    var str=iconv.decode(buf,'GBK');//buffer转换为gbk
    console.log(str)//鎴戞槸鐜嬬倻
    var str1=iconv.decode(buf,'utf-8');//buffer转换为utf-8
    console.log(str1)//我是王炜
    
    
    var buf2=iconv.encode(str1,'utf-8');//utf-8转buffer
    console.log(buf2);//<Buffer e6 88 91 e6 98 af e7 8e 8b e7 82 9c>
    console.log(buf2.toString())//我是王炜

  • 相关阅读:
    freenas的踩坑记录:群晖CIFS挂载freeNas的smb共享目录
    【ikuai】爱快软路由上手
    Nacos集成Spring Cloud Gateway使用第三章:nacos配置中心
    Nacos集成Spring Cloud Gateway使用第二章:上手demo
    Nacos集成Spring Cloud Gateway使用第一章:理解解释
    函数指针数组
    回调函数
    使用C语言实现strcpy函数和字符串大小写交换
    Qt : Setting应用程序的数据保存和读取
    Qt 文件操作以及字体颜色选择
  • 原文地址:https://www.cnblogs.com/douyaer/p/8017638.html
Copyright © 2011-2022 走看看