• Node.js知识点整理之----Buffer类


    Buffer类,是用来创建一个专门存放二进制数据的缓存区。

    Buffer类,是一个可以在任何模块中使用的全局类。

    Buffer类使用 new 关键字创建该类的实例对象。

    三种形式创建实例对象:

    new Buffer(size)
    //对象拥有一个length属性,属性值为缓存区大小
    
    new Buffer(array)
    //直接使用一个数组来初始化缓存区
    
    new Buffer(str,[eccoding])
    //直接使用一个字符串来初始化缓存区
    //参数一:必须,用于初始化缓存区的字符串
    //参数二:可选,用于指定文字编码格式的字符串,默认为utf

    字符编码:

    • ascii:ASCII字符串
    • utf8:UTF-8字符串
    • utf16le:UTF-16LE字符串
    • ucs2:UCS3字符串
    • base64:经过base64编码后的字符串
    • binary:二进制数据(不推荐使用)
    • hex:使用16进制数值表示的字符串

    在Node.js中,一个字符串的长度 与 根据该字符串所创建的缓存区的长度并不相同。

    字符串对象一旦创建不可被修改

    Buffer对象创建后可被修改

    Buffer对象方法

    fill(value,[offset],[end])

    • 参数一:必须,表示需要被写入的数值
    • 参数二:可选,指定从第几个字节处开始写入数值,默认为0
    • 参数三:可选,指定将数值一直写入到第几个字节处,默认Buffer对象的大小,即书写到缓存区底部

    toString([encoding],[start],[end])

    将Buffer对象中保存的数据转换为字符串。

    • 参数一:可选,指定Buffer对象中保存的文字编码格式,默认utf8
    • 参数二:可选,指定被转换的数据起始位置,以字节为单位
    • 参数三,可选,指定被转换的数据终止位置,以字节为单位

    write(string,[offset],[length],[encoding])

    向Buffer对象中写入字符串

    • 参数一:必须,指定需要写入的字符串
    • 参数二:可选,指定字符串转换为字节数据后的开始位置
    • 参数三:可选,指定字符串转换为字节数据后的长度
    • 参数四:可选,指定写入字符串时使用的编码格式,默认为utf8

    copy(targetBuffer,[targetStart],[sourceStart],[sourceEnd])

    将Buffer对象中二进制数据复制到另一个Buffer对象中。

    Buffer对象与数值对象之间的相互转换

    参数一:offset 指定获取数据的起始位置,以字节为单位

    参数二:noAssert 布尔值,指定是否对offset的值进行验证

    • readUInt8(offset,[noAssert])
    • writeUInt8(value,offset,[noAssert])
    • readUInt16LE(offset,[noAssert])
    • writeUInt16LE(value,offset,[noAssert])
    • readUInt16BE(offset,[noAssert])
    • writeUInt16BE(value,offset,[noAssert])
    • readUInt32LE(offset,[noAssert])
    • writeUInt32LE(value,offset,[noAssert])
    • readUInt32BE(offset,[noAssert])
    • writeUInt32BE(value,offset,[noAssert])
    • readInt8(offset,[noAssert])
    • writeInt8(value,offset,[noAssert])
    • readInt16LE(offset,[noAssert])
    • writeInt16LE(value,offset,[noAssert])
    • readInt16BE(offset,[noAssert])
    • writeInt16BE(value,offset,[noAssert])
    • readInt32LE(offset,[noAssert])
    • writeInt32LE(value,offset,[noAssert])
    • readInt32BE(offset,[noAssert])
    • writeInt32BE(value,offset,[noAssert])
    • readFloatLE(offset,[noAssert])
    • writeFloatLE(value,offset,[noAssert])
    • readFloatBE(offset,[noAssert])
    • writeFloatBE(value,offset,[noAssert])
    • readDoubleLE(offset,[noAssert])
    • writeDoubleLE(value,offset,[noAssert])
    • readDoubleBE(offset,[noAssert])
    • writeDoubleBE(value,offset,[noAssert])

    Buffer对象与JSON对象之间的相互转换

    可以使用 JSON.stringify()将Buffer对象中保存的数据转换为一个字符串

    可以使用JSON.parse()将一个经过转换后的字符串还原为一个数组

    Buffer类方法

    Buffer.isBuffer(obj)

    判断一个对象是否为Buffer对象。

    Buffer.byteLength(string,[encoding])

    计算一个指定字符串的字节数。

    Buffer.concat(list,[totalLength])

    用于将几个Buffer对象结合创建为一个新的Buffer对象。

    • 参数一:必须,Buffer对象数组
    • 参数二:可选,指定被创建的Buffer对象的总长度

    如果参数一为空数组 或 参数二等于0,返回一个长度为0的Buffer对象

    如果参数一为只有一个Buffer对象,返回该Buffer对象

    如果参数一拥有一个以上的Buffer对象,返回被创建的Buffer对象

    Buffer.isEncoding(encoding)

    检测一个字符串是否为一个有效的编码格式字符串。

    StringDecoder对象

    将Buffer对象中的数据转换为字符串,作用与toString()相同。 对UTF8编码格式的字符串提供更好的支持。
    必须加载Node.js中的string_decoder模块,才能使用。

    //加载模块
    var StringDecoder = require('string_decoder').StringDecoder;
    
    //创建对象
    var decoder = new StringDecoder([encoding])

    decoder.write(buffer)
  • 相关阅读:
    Intellij IDEA中Maven解决依赖失效
    Spring Boot 推荐的基础 POM 文件
    Spring Boot启动流程详解(一)
    spring boot应用启动原理分析
    Spring Boot 配置文件详解:Properties和YAML
    Spring Boot 属性配置和使用
    Arcgis for js载入天地图
    Android菜鸟的成长笔记(28)——Google官方对Andoird 2.x提供的ActionBar支持
    Android仿IOS回弹效果 ScrollView回弹 总结
    Android开发有用的站点
  • 原文地址:https://www.cnblogs.com/adhehe/p/9697448.html
Copyright © 2020-2023  润新知