介绍:Buffer类是一个全局类,是一个比较罕见不需要require( ‘buffer’ )就可以使用的类,Buffer类似与数组也有length, 它里面的元素为16进制的两位数,即 0-255的数值,大小一经设置不可改变。

作用 用来处理二进制数据。

一、创建一个Buffer类有三种方法:
1.new Buffer( size );
  size是一个长度或者说是空间大小,number类型;
为buffer分配5个空间大小,里面的内容是五个随机填充的字节,长度以内的下标对应项能改变,不能像数组改变大小; 
 
2.new Buffer( Array );
  Array是一个字节数组
  

3.new Buffer( string, encoding );
  第一个传的是字符串,第二个是字符编码的类型;不同编码把字符串转换成字节效果不一样;
默认情况下编码类型是utf-8,一个字母和数字占1个字节,一个汉字占3个字节,buffer支持的编码类型有7种:
     1.ascii   2.utf8  3.utf16le 4.ucs2  5.base64  6.binary  7.hex
 
二、Buffer Api 
1. buf.write(string, [offset], [length], [encoding])
  string String类型 - 将要被写入 buffer 的数据
  offset Number类型, 可选参数,从buffer的第几位开始写入
  length Number类型, 可选参数, 写几个到buffer对象中
  encoding String类型, 可选参数, 默认: 'utf8'
 

2. buf.toString([encoding],[start],[end])
  encoding String类型, 可选参数, 默认: 'utf8'
  start Number类型, 可选参数,从第几位开始转变
  end Number类型, 可选参数, 转变到第几位,不包括结束位
 
3. buf.slice([start],[end])    类似与数组的slice

  start Number类型, 可选参数,从第几位开始切

  end Number类型, 可选参数, 切到第几位,不包括结束位

**该方法返回的是一个新的bf对象,切取的片段与老的buffer引用的是同一地址,对其中任何一个bf对象进行修改,另外一个bf也会改变;

4. buf.toJson([start],[end])  返回一个 JSON表示的Buffer实例

   

5.  buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])

  targetBuffer  - 新的Buffer对象

  targetStart Number类型, 可选参数,从新的buffer的第几位开始写入

  sourceStart Number类型, 可选参数, 从老bf的第几位开始拷贝

  sourceEnd Number类型, 可选参数, 从老bf的第几位结束拷贝,不包含结束位

6.  buf.fill(string,strat,end)

  string, 填充的字符串

  start 默认是0, 从哪个地方开始被填充

  end, 可选参数 默认是bf.length, 填充到哪,不包括结束位

三、buffer提供的类方法 

1. Buffer.isEncoding('编码’),判断bf是否支持该编码

2. Buffer.isBuffer(元素),判断该元素是否是bf对象

3.Buffer.byteLength(‘字符串’,'字符编码’),返回的是字符串的字节长度

4.Buffer.concat(字节数组 ,所有bf的总字节长度)  返回一个新的bf对象

学习来源 => http://www.imooc.com/learn/637

今天就写到这了,还有buffer的著名的8kb载体,下次在写^_^    大家可以去看看这篇博客 http://www.cnblogs.com/time-is-life/p/5385855.html

如何使用node中的buffer的更多相关文章

  1. Node.js中的Buffer

    Buffer介绍 为什么要用Buffer? 在Node/ES6 出现之前,前端工程师只需要进行一些简单的额字符串或者ODM操作就可以满足业务需求了,所有对二进制数据比较陌生. 在node出现之后,前端 ...

  2. 学废了系列 - WebGL与Node.js中的Buffer

    WebGL 和 Node.js 中都有 Buffer 的使用,简单对比记录一下两个完全不相干的领域中 Buffer 异同,加强记忆. Buffer 是用来存储二进制数据的「缓冲区」,其本身的定义和用途 ...

  3. node中的Stream-Readable和Writeable解读

    在node中,只要涉及到文件IO的场景一般都会涉及到一个类-Stream.Stream是对IO设备的抽象表示,其在JAVA中也有涉及,主要体现在四个类-InputStream.Reader.Outpu ...

  4. node中的可读流和可写流

    javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同 ...

  5. node中的Readable - flowing/non-flowing mode

    大家都知道在node中Readable Stream有两种模式: flowing mode和non-flowing mode. 对于flowing mode的Readable Stream, 我们是没 ...

  6. nodejs中的Buffer

    一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...

  7. node中可读流、可写流

    javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同 ...

  8. 使用node中的iconv-lite实现对“gbk”格式的转码

    在window中,gbk和utf-8是最常见的两种格式,但是我们在显示的时候往往需要将GBK转换为UTF-8,我现在有一个同步读取文件的操作: const fs = require('fs'); co ...

  9. Node.js:Buffer(缓冲区)介绍及常用方法

    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型. 但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门 ...

随机推荐

  1. struts2 拦截器1

    action invoke前会调用,invoke后会调用 public class FirstInterceptor extends AbstractInterceptor{ @Override pu ...

  2. Seven Steps to Success Machine Learning in Practice

    Seven Steps to Success Machine Learning in Practice Project failures in IT are all too common. The r ...

  3. 应用安全技术趋势之 Top 5

    而今,大多数应用都依赖于像入侵防护系统(Instrusion Prevention System)和 Web 应用防火墙(Web Application Firewall,以下全文简称 WAF)这样的 ...

  4. insert时出现主键冲突的处理方法【转载】

    原文出处:http://hi.baidu.com/ytjwt/blog/item/1ccc2c26022b0608908f9d8c.html 使用"insert into"语句进行 ...

  5. jps命令(Java Virtual Machine Process Status Tool)

    1.介绍 用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程, ...

  6. LeetCode 面试:Add Two Numbers

    1 题目 You are given two linked lists representing two non-negative numbers. The digits are stored in ...

  7. 为什么Nhibernate中属性和方法必须Virtual的

    如果你曾经用过NHibernate 2.0或者更高的版本,那您一定碰到过下面的错误:NHibernate.InvalidProxyTypeException: The following types ...

  8. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  9. Linux 关机命令 重启命令

    Linux centos重启命令: 1.reboot2.shutdown -r now 立刻重启(root用户使用)3.shutdown -r 10 过10分钟自动重启(root用户使用)4.shut ...

  10. jQuery.extend方法和开发中变量的复用

    最近在用commonJS规范进行客户端开发,遇到如下问题: 一般一个模块内部可能会定义一系列变量或一系列相关变量,比如写了一个颜色选择弹框模块大概会有如下变量定义 var settings = { / ...