NodeJS基础入门-Buffer
Buffer.byteLength
console.log(Buffer.byteLength('test'));
console.log(Buffer.byteLength('我是C语言爱好者'));
4
22
每个中文是3个字节
Buffer.isBuffer
console.log(Buffer.isBuffer({}));
console.log(Buffer.isBuffer(Buffer.from([1,2,3])));
false #第一个不是Buffer
true #第二个是Buffer
Buffer.concat()
const buf1 = Buffer.from('This ');
const buf2 = Buffer.from('is ');
const buf3 = Buffer.from('a ');
const buf4 = Buffer.from('book ');
console.log(Buffer.concat([buf1, buf2, buf3, buf4]).toString());
This is a book
实例的常见用法
buf.length
const buf = Buffer.from('你好');
console.log(buf.length);
const buf2 = Buffer.alloc(10);
buf2[0] = 2;
console.log(buf2.length);
6 # 中文字符3个字节
10 # 固定分配10个长度单位
buf.toString()
console.log(buf.toString());
console.log(buf.toString('base64'));
你好 #默认UTF-8
5L2g5aW9 #设置为base64
buf.fill()
const buf3 = Buffer.allocUnsafe(10);
console.log(buf3);
console.log(buf3.fill(10,2,6));
<Buffer 00 00 00 00 00 00 00 00 48 c1>
<Buffer 00 00 0a 0a 0a 0a 00 00 48 c1> #填入10,十六进制0x0a,在buf3[2]到buf[6]的填入
buf.equals()
const buf = Buffer.from('test');
const buf2 = Buffer.from('test');
const buf3 = Buffer.from('test!');
console.log(buf.equals(buf2));
console.log(buf.equals(buf3));
比较两个内容是否一样:
true
false
buf.indexOf()
const buf = Buffer.from('test');
console.log(buf.indexOf('es'));
console.log(buf.indexOf('esa'));
1 #从buf[1]找到
-1 # 没有找到
Buffer乱码问题的解决
const buf = Buffer.from('中文字符串!');
for (let i = 0; i < buf.length; i += 5) {
const b = Buffer.allocUnsafe(5);
buf.copy(b, 0, i);
console.log(b.toString());
}
输出是乱码:
中�
�字�
��串
!s=
输出存在乱码
const StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder('utf8');
const buf = Buffer.from('中文字符串!');
for (let i = 0; i < buf.length; i += 5) {
const b = Buffer.allocUnsafe(5);
buf.copy(b, 0, i);
console.log(decoder.write(b));
}
中
文字
符串
!9�
还是存在乱码,不知道什么原因?
NodeJS基础入门-Buffer的更多相关文章
- 02 nodejs命令参数(NodeJS基础入门)
声明:本文章可供有一定js基础的朋友参考nodejs入门,本文未讲解nodejs的安装,如有需要的同学可以加QQ3382260752找我,进行交流学习. 建议使用开发软件:webstorm或hbuil ...
- NodeJS基础入门
1.前端最主流的JavaScript运行环境 1>Node.js是一个基于Chrome V8引擎的JavaScript运行环境. 2>Node.js使用了一个事件驱动.非阻塞式I/O的模型 ...
- NodeJS基础入门-fs文件系统
文件I/O是由简单封装的标准POSIX函数提供.通过require('fs') 使用该模块.所有的方法都有异步和同步的形式. 异步方法的最后一个参数都是一个回调函数.传给回调函数的参数取决于具体方法, ...
- 边走边学Nodejs (基础入门篇)
1.什么是Node.js Nodejs ,或者node, 是一个基于ChromeJavaScript执行时建立的平台.用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非堵 ...
- NodeJS基础入门-Event
大多数Node.js核心API都采用惯用的异步事件驱动架构,其中某些类型的对象(触发器)会周期性地触发命名事件来调用函数对象(监听器). 例如,net.Server对象会在每次有新连接时触发事件;fs ...
- Mongoose基础入门
前面的话 Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具.本文将详细介绍如何使用Mongoose来操作MongoDB NodeJS驱动 在介绍Mongoose之 ...
- [转]Nodejs基础中间件Connect
Nodejs基础中间件Connect 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的J ...
- Nodejs基础中间件
Nodejs基础中间件Connect http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
随机推荐
- C# 流
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- HTTP协议初识
HTTP协议介绍 当你在浏览器地址栏敲入“http://www.cnblogs.com/”,然后猛按回车,呈现在你面前的,将是博客园的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其 ...
- 不可见类有抽象父类,spring配置子类bean,注入父类,aop就可以切父类的方法
public class TestBeanChild { int b = 1; public TestBean createDefault() { return new TestBeanDefault ...
- 应用的入口——Startup
应用的入口——Startup 一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间 ...
- 【0 基础学Dojo】第【1】篇 HelloWord
打开dojo 官网首页 http://dojotoolkit.org/,我们看到 点击get dojo 你将得到下载Dojo 的不同方式 2,点击下面方式下载, 解压后 新建myTest.html, ...
- BZOJ4299: Codechef FRBSUM(主席树)
题意 题目链接 数集S的ForbiddenSum定义为无法用S的某个子集(可以为空)的和表示的最小的非负整数. 例如,S={1,1,3,7},则它的子集和中包含0(S’=∅),1(S’={1}),2( ...
- 初识Adapter
首先得了解Adapter层级关系: 示例,将user对象适配到textview public class User { private String userName; private String ...
- epoll使用总结
epoll的使用总结 使用epoll来实现一个tcp server,中间碰到了不少使用细节上的问题,总结一下. man epoll里推荐的使用方法 epoll使用代码 #define MAX_EVEN ...
- Java 反射机制(二)
<Core Java Volume I --- Fundamentals>介绍了三种创建Class对象的方法.本文将举例说明这三种创建Class对象---创建类的方法. 一.public ...
- LINQ新添知识
linquser.ExecuteCommand("TRUNCATE TABLE Board"); linquser.ExecuteCommand("DELET ...