nodejs中Buffer的创建和转换

  buffer是用来做什么?主要是用来处理二进制文件流和TCP流的文件缓存区。我们可以将二进制流和string,json,int进行转换,也可以进行复制,或者通过自带的函数进行判断buffer的一些状态。

  创建Buffer对象(实例)

    1.使用var buffer = new Buffer(size)创建对象,然后用buffer.fill(value,[offset],[end])来初始化对象。

    2.使用var buffer = new Buffer(array)创建对象。

    3.使用var buffer= new Buffer(string,[encoding])创建对象。

  **字符串的长度和缓冲区的长度是不一样的,因为字符串是文字为单位,而缓冲区是以字节数为单位。

  

  Buffer<---->string 相互转换(实例

    buf.toString([encoding],[start],[end]);//buffer转换为字符串

    buf.write(string,[offset],[length],[encoding]);//buffer将string转换为buf并且写入现有的buffer中(这里wirte实际功能是替换!!)

    Stringdecoder类:

     解释为何使用这个类?因为我们通长会切割或者分开生产buffer,那么一段话就会被切开,这样的话使用buffer->string则会生成乱码,所以使用decoder.write(buf);则会避免这个问题。

  Buffer<---->int 相互转换(实例

    buf.readUInt8(offset,[noAssert])//这个函数用来读取第offset位置上的buffer数据,如果noAssert设置为true,则会判断是否offset没有越界,并且抛出异常。

    buf.wirteUInt8(value,offset,[noAssert])//这个函数用来替换第offset位置上的值。

  

  Buffer<----->JSON相互转换(实例

    var json = JSON.strify(buf)//将buf转换为json格式数据

    var array = JSON.parse(json)//将json转化为array数组

  buf1复制到buf2

    buf.copy(targetBuffer,[targetstart],[sourcestart],[sourceend]);//将buffer1复制到bufer2之中。

  

Buffer类的类方法:(实例

   1.isBuffer方法:

      Buffer.isBuffer(obj)   是否是一个buffer对象。

   2.byteLength方法:

      Buffer.byteLength(string,[encoding])   判断string转为buffer的长度

    3.concat方法    

       Buffer.concat(list,[totalLength])   list是一个数组,将几个buffer合为一个的orgin方法。

    4.isEncoding方法

       Buffer.isEncoding(encoding)判断当前是否是一个有效的编码格式。

时间: 2024-11-29 00:20:04

nodejs中Buffer的创建和转换的相关文章

NodeJS中Buffer模块详解

一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作.除了可以读取文件得到Buffer的实例外,还能够直接构造,例如: 复制代码 代码如下: var buffer = new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ; Buffer与字符串类似,除了

在NodeJS中玩转Protocol Buffer

Protocol Buffer入门教程 Protocol Buffer是个什么鬼 NodeJS开发者为何要跟Protocol Buffer打交道 在NodeJS中实践Protocol Buffer协议 选择支持protobuf的NodeJS第三方模块 一个栗子 书写proto文件 编译 proto 文件 编写 Writer 编写Reader 运行结果 再举一个栗子 编写proto 编写client 书写server 运行结果 其他高级特性 嵌套Message Import Message 总结一

《Nodejs开发加密货币》之九:在Nodejs中使用加密解密技术

关于 <Nodejs开发加密货币>,是一个加密货币产品的详细开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台.从服务器到客户端.从PC到移动.加密解密.区款链等各个环节.代码完全开源.文章免费分享. 相关资源见 http://ebookchain.org QQ交流群: 185046161 前言 加密解密技术在加密货币开发中的作用不言而喻.但技术本身并不是什么新鲜事,重要的是如果没有前面的P2P网络,和后面要介绍的区块链,单独的加解密显然没有那么神奇,加密货币也不会成为无需验证.

Nodejs中的流

Nodejs中的很多地方都用到了流,流是一个很常见的概念,一个http请求,控制台输入输出的形式都是流.流可以分为三种: 可读流 可写流 既能读又能写 其中第三种流又可以分为全双工流Duplex和转换流Transform,另外,所有的流都是EventEmitter的实例,也就是有发送事件和处理事件的能力. 可读流 Readable Stream 可读流可以输出数据,常见的可读流有: http请求和响应 读文件 压缩解压 加密解密 tcp sockect 进程输入 可读流分为两种模式:流式的和非流

nodejs基础 -- buffer缓冲区

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型.但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区.在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库.Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库.原始

nodejs中http-proxy使用小结

最近在写xmocker的工具,用于开发前期的mock数据,不可避免的用到了代理的中间件.当然,github上有关于http-proxy封装的中间件.毕竟是自己练手的项目,就自己写了个中间件,方便定制功能. http-proxy库用于koa中,是使用它的 proxy.web方法.常规的用法是: proxy.web(req, res, { target: 'http://mytarget.com:8080' }, function(e) { ... }); 项目中的要求是将API代理到用户填写的网址

node.js中Buffer缓冲器的使用

一.什么是Buffer Buffer缓冲器是用来存储输入和输出数据的一段内存.js语言没有二进制数据类型,在处理TCP和文件流的时候,就不是很方便了. 所以node.js提供了Buffer类来处理二进制数据,Buffer类是一个全局变量,Buffer在创建的时候大小就固定了,无法改变. Buffer类的实例类似于由字节元素组成的数组,可以有效的表示二进制数据. 二.什么是字节 字节是计算机存储时的一种计量单位,一个字节等于8个位.一个位就代表0或1,每8个位(bit)组成一个字节(byte).

[转]nodejs中的process模块--child_process.exec

1.process是一个全局进程,你可以直接通过process变量直接访问它. process实现了EventEmitter接口,exit方法会在当进程退出的时候执行.因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行. 在下面例子中,setTimeout里面的语句是没有办法执行到的. 1 process.on('exit', function () { 2 setTimeout(function () { 3 console.log('This will not ru

nodejs中aes-128-cbc加密和解密

和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用向量(iv),所以nodejs中要用createCipheriv方法,而不是createCipher. 在这类加密和解密的计算中,最最要注意的就是中文编码问题,不然铁定采坑.我踩完坑了,把能跑的代码发上来下,运行环境nodejs 4.4.6. var crypto = require('crypto