zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Poj 1742 Coins(多重背包)
    Poj 2350 Above Average(精度控制)
    求二进制数中1的个数
    Poj 1659 Distance on Chessboard(国际象棋的走子规则)
    Poj 2411 Mondriaan's Dream(压缩矩阵DP)
    Poj 2136 Vertical Histogram(打印垂直直方图)
    Poj 1401 Factorial(计算N!尾数0的个数——质因数分解)
    poj 2390 Bank Interest(计算本利和)
    Poj 2533 Longest Ordered Subsequence(LIS)
    Poj 1887 Testing the CATCHER(LIS)
  • 原文地址:https://www.cnblogs.com/adhehe/p/9697448.html
Copyright © 2011-2022 走看看