[Node.js] Node.js Buffers

>> node
>>fs.readFile(‘finnish.txt‘, function(err,data){
    console.log(data);
});
// Output string is not what we want

>>fs.readFile(‘finnish.txt‘, function(err, data){
    console.log(data.toString());
});
// Ouptu is ok

/* Encoding */
>>fs.readFile(‘finnish.txt‘, ‘utf8‘, function(err,data){
    console.log(data);
});
// Ouptu is ok

>>str = ‘\u0048\u0065\u006c\u006f \u0057\u006f\u0072\u006c\u0064\u0021‘;
‘Hello World‘

str.length
12

Buffer.byteLength(str, ‘utf8‘)
12

But the Buffer.byteLength and str.length are not equal!!

------

>>str = ‘\u00bd + \u00bc = \u00be‘;
‘1/2 + 1/4 = 3/4‘;

str.length
9

Buffer.byteLength(str, ‘utf8‘)
12

-----

>>buf = new Buffer(5)
>>buf.write(‘hello wolrd‘);
>>buf.toString()
‘hello‘

>>buf.write(‘hello‘, 2);
hehel

>>buf.write(‘xxxx‘, 2, 1);
>>buf.toString()
hexel

>>buf.write(‘xxxx‘, 2, 2);
>>buf.toString()
hexxel

>>buf.write(‘yyyy‘, 2, 1, ‘utf8‘)
>>buf.toString()
heyel

-----

buf1 = new Buffer(‘1234‘)
buf2 = new Buffer(‘0123‘)
buf3 = new Buffer(‘1234‘)

buf1.compare(buf2)
1 //not equal
buf1.compare(buf3)
0 //equal

buf1.equals(buf2)
false

>>var arr = [buf1, buf2]
>>arr.sort(Buffer.compare)
[ <Buffer 30 31 32 33>, <Buffer 31 32 33 34> ]

>>buf.toJSON()
{type: ‘Buffer‘, data: [104, 101, 121, 101, 108]}

>>  buf = new Buffer(‘Hello World!‘);
>>  buf2 0 buf.slice(0,3)

buf2.toString();
‘Hel‘

In this lesson, we cover the Node.js Buffer object in detail. Not only will you learn that the buffer object is a reference to a memory space outside of the V8 engine, but you will learn practical methods to access it, modify it, and convert it to standard Javascript objects that can be used by your code. Examples and discussion are provided for using the toString() method, determining the byte length of the buffer, writing to a buffer, how to avoid truncating data, comparing buffers for equality using both compare() and equals(), and copying buffers using slice().

时间: 2024-12-17 09:16:27

[Node.js] Node.js Buffers的相关文章

[Node.js]node中的require到底是怎样工作的

关于require 但凡使用过node.js/io.js,必定都会用到require这个函数来引用其它模块(自己写的或他人的).但很多人(包括本人)都没有把node中关于require(在文档中modules这一部份)介绍认真看过一遍. 这里先介绍一下大家可能都已熟知的情况: 文件加载 node中在使用require加载文件时,会尝试在引用文件名不存在的情况下,依次加上.js..node..json这三个后缀名来试错.注意,这里指的是引用文件名对应文件不存在的情况下. 例如,当你在代码中使用re

學習 React.js:用 Node 和 React.js 創建一個實時的 Twitter 流

Build A Real-Time Twitter Stream with Node and React.js By Ken Wheeler (@ken_wheeler) 簡介 歡迎來到學習 React 的第二章,該系列文章將集中在怎麼熟練並且有效的使用臉書的 React 庫上.如果你沒有看過第一章,概念和起步,我非常建議你繼續看下去之前,回去看看. 今天我們準備創建用 React 來創建一個應用,通過 Isomorphic Javascript. Iso-啥? Isomorphic. Java

node.js高级编程|node.js 视频教程_基于node.js+Express.js+Jade+MongoDB实战开发

基于node.js+Express.js+Jade+MongoDB开发Web即时聊天系统课程讲师:幻星课程分类:前端开发适合人群:初级课时数量:36课时更新程度:完成用到技术:Node.js NPM. Express.NoSQL,MongoDB涉及项目:匿名聊天网站系统node.js视频教程:http://www.ibeifeng.com/goods-462.htmlnode.js 教程适合人群:node.js视频教程要求学员了解JavaScript,node.js入门教程适合希望更深入的学习N

[Node.js] Node + Redis 实现分布式Session方案

Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Session 数据保留在服务端,而为了标识具体 Session 信息指向哪个连接,需要客户端传递向服务端发送一个连接标识,比如存在Cookies 中的session_id值(也可以通过URL的QueryString传递),服务端根据这个id 进行存取状态信息. 在服务端存储 Session,可以有很多种方案: 内存存储 数据库存储 分布式缓存存储 分布式Session

node.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载

ode.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载  联系QQ:1026270010  一.课程背景 1.什么是Node.js ? Node.js 是一个可以快速构建网络服务及应用的平台 .该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装. V8引擎执行Javascript的速度非常快,性能非常好.Node对一些特殊用例进行了优化,

nvm: node.js(io.js)版本管理器

nvm(Node Version Manager)是一款node.js版本管理软件,支持io.js. 为什么要对node.js进行版本管理? 方便生产环境对node.js进行版本升级 方便开发环境切换不同node.js版本(以进行开发.调试.适配等) 方便隔离node.js和系统环境,删除更容易 其他1024个理由…… 总之,如果你需要安装node.js(io.js)而现在还没有安装,恭喜你,先安装nvm吧(目前不支持windows) 具体安装方法参考github 这里简单介绍一下常见使用方法,

[转]Browserify —— 利用Node.js实现JS模块化加载

原文地址:http://www.oschina.net/p/browserify Browserify 可以让你使用类似于 node 的 require() 的方式来组织浏览器端的 Javascript 代码,通过预编译让前端 Javascript 可以直接使用 Node NPM 安装的一些库. 安装: npm install -g browserify    示例 这是 main.js 的内容,像普通的 nodejs 程序那样使用 require() 加载库和文件: var foo = req

输入npm install 报错npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email&#160;protected] postinstall: `node scripts/build.js`

输入npm install 报以下错误 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email protected] postinstall: `node scripts/build.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] postinstall script. npm ERR! This is probably not a

js node 节点 原生遍历 createNodeIterator

1.createIterator msn: https://developer.mozilla.org/en-US/docs/Web/API/Document/createNodeIterator var filter = function(node){ return node.tagName.toLowerCase() == 'p' ? NodeFilter.FILTER_ACCEPT: NodeFilter.FILTER_REJECT; } var iterator = document.c

Angular JS + Express JS入门搭建网站

3月份开始,接到了新的任务,跟UI开发有关,用的是Angular JS,Express JS等技术.于是周末顺便学习下新技术. 组里产品UI架构如下: 其中前端,主要使用Angular JS框架,另外配合Bootstrap提供的很多控件以及JQuery,后台主要是Express JS搭建的Web Server,Express JS配合Nginx使用非常方便. 由此在项目不忙的时候,自己于是有时间和兴趣学习一下Angular JS与Express JS. 同时自己实现了一个最简单的Angular