nodejs二进制与Buffer的介绍与使用

yizhihongxing

Node.js二进制与Buffer的介绍与使用

什么是二进制

计算机中的数字,都是以二进制的方式来存储和处理的。二进制是由“0”和“1”两个数字组成,其中每一位代表2的不同次方。例如,一个8位二进制数“10101010”所代表的十进制数就是:(1x2^7) + (0x2^6) + (1x2^5) + (0x2^4) + (1x2^3) + (0x2^2) + (1x2^1) + (0x2^0) = 170。

什么是Buffer

在Node.js中,Buffer是一种更好的处理二进制数据的方式。Buffer是一个存储二进制数据的类数组对象,它的元素是16进制的两位数,即0-255的整数。

Buffer可以存储任何数据类型,包括ASCII,UTF-8,甚至是图片、音频和视频等二进制数据。Buffer的大小一旦被分配,就不能被修改,但可以通过复制到一个不同大小的Buffer实例来实现。

如何创建Buffer

在Node.js中,可以通过多种方式来创建Buffer。

通过Buffer.from创建Buffer

// 创建一个长度为10的Buffer对象,并将其填充为数字1
const buf = Buffer.from([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);
console.log(buf); // 输出:<Buffer 01 01 01 01 01 01 01 01 01 01>

通过Buffer.alloc创建Buffer

// 创建一个长度为10的Buffer对象,并将其填充为0
const buf = Buffer.alloc(10);
console.log(buf); // 输出:<Buffer 00 00 00 00 00 00 00 00 00 00>

通过Buffer.allocUnsafe创建Buffer

// 创建一个长度为10的Buffer对象,并使用随机值进行填充
const buf = Buffer.allocUnsafe(10);
console.log(buf); // 输出:<Buffer 3a 0f 11 c2 21 03 d0 03 88 2a>

如何访问Buffer中的数据

在Buffer中有许多方法可以访问数据,比如:读取、写入、拷贝和填充等。下面是一些常用的方法。

读取Buffer内容

const buf = Buffer.from('hello world');

// 读取特定位置的字节
console.log(buf[0]); // 输出:104

// 读取特定位置到指定长度的字节
console.log(buf.slice(0, 5)); // 输出:<Buffer 68 65 6c 6c 6f>

// 读取字符串
console.log(buf.toString()); // 输出:hello world

写入Buffer内容

const buf = Buffer.alloc(10);

// 写入一个字节
buf[0] = 72;

// 写入一个字符串
buf.write('world');

console.log(buf); // 输出:<Buffer 48 6f 72 6c 64 00 00 00 00 00>

示例说明

示例一:读取文件内容

const fs = require('fs');
const path = require('path');

// 读取文件内容
const file = fs.readFileSync(path.join(__dirname, 'test.txt'));

console.log(file); // 输出:<Buffer 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 66 69 6c 65>

示例二:网络请求返回Buffer

const http = require('http');

http.get('http://www.baidu.com', function(res) {
  const chunks = [];
  res.on('data', function(chunk) {
    chunks.push(chunk);
  });

  res.on('end', function() {
    const buffer = Buffer.concat(chunks);    
    console.log(buffer.toString());
  });
});

总结

在Node.js中,二进制数据的处理十分常见。Buffer提供了一种更好的处理方式,它可以存储任何类型的数据,并且可以进行多种操作,比如读取、写入、拷贝和填充等。通过了解如何创建和操作Buffer对象,可以更好地处理二进制数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs二进制与Buffer的介绍与使用 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Cookie跨域问题解决方案代码示例

    以下是 “Cookie跨域问题解决方案代码示例”的完整攻略,希望对你有所帮助。 什么是Cookie跨域问题 在前后端分离的架构中,前端会请求后端API接口来获取数据或其他操作。如果这个API接口是来自于不同的域名,使用Cookie就会遇到跨域问题。具体来说,浏览器的同源策略会禁止不同源之间的Cookie操作,这就导致了Cookie跨域问题。 Cookie跨域…

    node js 2023年6月8日
    00
  • 在Docker快速部署Node.js应用的详细步骤

    当使用Docker来部署Node.js应用时,以下是一些简单的步骤: 步骤1:创建Node.js应用 首先,需要创建一个Node.js应用程序。可以在您的计算机上使用任何编辑器,例如Visual Studio Code,Sublime Text等等。就本文而言,我们为您提供一个简单的HTTP服务器示例。 const http = require(‘http’…

    node js 2023年6月8日
    00
  • js宝典学习笔记(上)

    JS宝典学习笔记(上)攻略 1. 了解JS基础语法 要学习JS,首先要掌握其基础语法。包括: 变量、常量的定义和使用; 数据类型、运算符等基本概念; 流程控制、函数、循环等基本语句的使用。 建议通过《JavaScript高级程序设计》等经典教材,辅以实战演练和练习,掌握JS基础语法。 2. 掌握DOM操作 DOM(文档对象模型)是JS的重要组成部分。掌握DO…

    node js 2023年6月8日
    00
  • nodejs URL模块操作URL相关方法介绍

    当我们使用 Node.js 开发网络应用时,经常需要对 URL 地址进行操作。Node.js 提供了 URL 模块,能够轻松地解析和操作 URL。 URL 模块简介 URL 模块是 Node.js 标准库的一部分,主要提供了 URL 的解析和格式化、拼接等功能。使用 URL 模块主要包括以下几个步骤: 引入 URL 模块 const url = requir…

    node js 2023年6月8日
    00
  • NodeJs中的非阻塞方法介绍

    NodeJs中的非阻塞方法介绍 在Node.js中,该平台采用了许多非阻塞方法,这些方法使得Node.js在高并发场景下具有出色的性能表现。 什么是阻塞? 在介绍非阻塞方法之前,我们先来了解一下阻塞的概念。阻塞是指在执行某操作时,该操作会一直阻塞在某一步骤上,直到该步骤执行完成以后才会进行下一步操作。 在同步编程中,当一个操作受到阻塞时,整个应用程序的运行都…

    node js 2023年6月8日
    00
  • Node常见的三种安全防范手段详解

    Node常见的三种安全防范手段详解 Node.js虽然广泛应用于Web开发的各个领域,但是它也有一些安全问题,尤其是在网络攻击频发的今天,Node.js和它的应用面临着更多的安全威胁。本文将介绍三种常见的Node.js安全防范手段,帮助开发者确保代码的安全性。 1. 尽量不使用eval()和Function()方法 eval()和Function()方法是一…

    node js 2023年6月8日
    00
  • 四叉树有损位图压缩处理程序示例

    四叉树有损位图压缩处理程序示例攻略 简介 四叉树是一种树型数据结构,它将平面划分为四个象限,每个节点都表示一个矩形区域。通过将图像中的每个像素点添加到四叉树中,可以实现对图像的压缩和处理。本文将介绍如何使用四叉树实现有损位图压缩处理程序。 程序实现步骤 将原图像转换为灰度图像; 将灰度图像转换为二值图像; 对于二值图像,将其划分为若干个相等的矩形区域; 对每…

    node js 2023年6月8日
    00
  • 用node.js写一个jenkins发版脚本

    下面我来详细讲解“用node.js写一个jenkins发版脚本”的完整攻略。 1. 环境准备 在开始编写jenkins发版脚本之前,我们需要安装好node.js和jenkins。以下是安装步骤。 安装node.js 访问node.js官网,下载对应系统的安装包。 安装node.js。安装过程中按照默认设置一步步进行即可。 安装jenkins 访问官网,下载对…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部