04-Buffer的使用

这篇具有很好参考价值的文章主要介绍了04-Buffer的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Buffer和二进制

对于前端开发来说,通常很少会和二进制打交道,但是对于服务器端为了做很多的功能,我们必须直接去操作其二进制的数据;所以Node为了可以方便开发者完成更多功能,提供给了我们一个类Buffer,并且它是全局的。

1.Buffer中存储的是二进制数据,那么到底是如何存储呢?

  • 我们可以将Buffer看成是一个存储二进制的数组
  • 这个数组中的每一项,可以保存8位二进制: 00000000

2.为什么是8位呢

  • 在计算机中,很少的情况我们会直接操作一位二进制,因为一位二进制存储的数据是非常有限的;
  • 所以通常会将8位合在一起作为一个单元,这个单元称之为一个字节(byte);
  • 也就是说 1byte = 8bit,1kb=1024byte,1M=1024kb;
  • 比如RGB的值分别都是255,所以本质上在计算机中都是用一个字节存储的;

Buffer和字符串

  • Buffer相当于是一个字节的数组,数组中的每一项对于一个字节的大小:
  • 如果我们希望将一个字符串放入到Buffer中,是怎么样的过程呢
const message = 'Hello world'

// 1.创建方式一
// const buffer = new Buffer(message)
// console.log(buffer)

// 2.创建方式二
const buffer = Buffer.from(message)
console.log(buffer);

将字符串转成对应的ascall码的16进制,Buffer中存储的是其对应的16进制。
中文如何解析

  • 默认编码:utf-8
  • 可以改成utf16
const message = '你好啊'

// const buffer = Buffer.from(message,'utf8')
const buffer = Buffer.from(message, 'utf16le')
console.log(buffer)
console.log(buffer.toString('utf16le'))

编码解码需要保持同一种格式

解码可以使用toString()

Buffer的其它创建方式

1.使用 Buffer.alloc() 方法创建指定大小的 Buffer,该方法会将 Buffer 中的所有字节都设置为 0。例如:

const buffer = Buffer.alloc(8)
console.log(buffer)
buffer[0] = 0x88
console.log(buffer)

2.使用 Buffer.allocUnsafe() 方法创建指定大小的 Buffer,该方法不会清空 Buffer 中的数据,因此创建的 Buffer 可能包含敏感信息。如果需要清空 Buffer 中的数据,可以使用 Buffer.fill() 方法。例如:

const buf = Buffer.allocUnsafe(10);
buf.fill(0);
console.log(buf)

这个例子中,创建了一个大小为 10 字节的未初始化的 Buffer 对象,然后使用 fill() 方法将所有字节都设置为 0。

Buffer和文件读取

sharp:图片的处理,包括裁剪。 https://blog.lcddjm.com/sharp-documents-cn/

npm i sharp文章来源地址https://www.toymoban.com/news/detail-496450.html

const fs = require('fs')
const sharp = require('sharp')

// 读文本文件
// fs.readFile('./foo.txt', (err, data) => {
//   console.log(data)
//   console.log(data.toString())
// })

// 读图片
// fs.readFile('./bar.png', (err, data) => {
//   console.log(data)
//   // 复制文件
//   fs.writeFile('./copybar.png', data, (err, data) => {
//     console.log(err)
//   })
// })

// sharp的使用
sharp('./bar.png')
  .resize(300, 300)
  .toBuffer()
  .then(data => {
    fs.writeFile('./bax.png', data, err => console.log(err))
  })

到了这里,关于04-Buffer的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue前端渲染blob二进制对象图片的方法

    近期做开发,联调接口。接口返回的是一张图片,是对二进制图片处理并渲染,特此记录一下。 本文章是转载文章,原文章:Vue前端处理blob二进制对象图片的方法 接口response是下图 显然,获取到的是一堆乱码,前端需要将其解析出来,百度之后发现解析二进制文档流的写法

    2024年02月15日
    浏览(65)
  • 前端:JS:将图片转为二进制与其他文本传入后端

    在前端,可以将图片转换为二进制数据,并将其与其他文本字符串一起发送到后端。一种常见的方法是将所有数据组合为一个 FormData 对象,然后通过 AJAX 或 Fetch API 将其发送给后端。以下是一个示例: 解释 : 当文件输入框内容发生变化时,会触发 change 事件。然后,它会读

    2024年04月26日
    浏览(41)
  • 《Kubernetes部署篇:Ubuntu20.04基于二进制安装安装kubeadm、kubelet和kubectl》

    由于客户网络处于专网环境下, 使用kubeadm工具安装K8S集群 ,由于无法连通互联网,所有无法使用apt工具安装kubeadm、kubelet、kubectl,当然你也可以使用apt-get工具在一台能够连通互联网环境的服务器上下载kubeadm、kubelet、kubectl软件包,然后拷贝到专网主机上,通过dpkg工具安装

    2024年02月10日
    浏览(48)
  • vue 后端返回二进制流-前端通过blob对象下载文件-图片

    前言 在实际开发中我们经常会遇见下载文件的场景,比如下载合同,下载文件 下载文件有2种方式,一种是后端返回二进制流,前端通过blob对象接受根据不同类型下载 还有一种把地址直接在浏览器新窗口打开浏览器打开pdf可以预览和下载,其他文件直接下载 但不管是那种方

    2024年02月05日
    浏览(81)
  • 解决前端二进制流下载的文件(例如:excel)打不开的问题

    1. 现在后端请求数据后,返回了一个二进制的数据,我们要把它下载下来。 这是响应的数据: 2. 这是调用接口的地方:  使用了file-saver插件:github地址 3. 这时如果直接下载的话,打开文件就会失败 4. 这时就必须要在调接口的时候做一下处理 responseType: \\\'arraybuffer\\\', 这个必须

    2024年02月04日
    浏览(128)
  • 【JavaScript】后端返回的二进制流音频数据或本地音频资源,前端如何播放?

    如果我们要使用本地的音频资源,在 vue3 中那么我们需要对资源的地址做一下处理 后端返回二进制流音频数据,怎么让其可播放 前端播放二进制语音流

    2024年02月03日
    浏览(64)
  • 【前端】WebSocket接收二进制数据转JSON并解决中文乱码问题(ArrayBuffer转json)

    WebSocket与mqtt服务器通信,接收二进制数据并将其转为Json使用。一般方式都会出现中文乱码问题。

    2024年01月22日
    浏览(67)
  • fpga开发:二进制转BCD码的电路设计

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 题目:二进制转BCD码的电路设计 一、设计要求 利用上海安路科技的EG4X20BG256板卡上面的资源(4个按键、4个

    2024年02月03日
    浏览(50)
  • 如何使用VSCode来查看二进制文件

    2023年11月6日,周一下午 目录 方法1:安装插件Binary Viewer 然后用vscode打开一个二进制文件,并点击右上角的\\\"HEX\\\" 方法2:安装插件Binary 然后用vscode打开一个二进制文件,并点击右上角的\\\"B\\\" 特点:功能比较完善 然后用vscode打开一个二进制文件,并点击右上角的\\\"HEX\\\" 特点:功能简

    2024年02月03日
    浏览(48)
  • 使用 WebSocket 发送二进制数据:最佳实践

    WebSocket  技术提供了一种在客户端和服务器间建立持久连接的方法,使得双方可以在打开连接后随时发送数据,而不必担心建立复杂的持久连接机制。同时,使用二进制数据,如ArrayBuffer,可以更有效率地传送图像、声音等信息。本指南旨在深入探讨如何使用WebSocket传输二进

    2024年04月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包