首页 > 编程语言 >node.js中的buffer.write方法使用说明

node.js中的buffer.write方法使用说明

时间:2023-07-20 12:06:12浏览次数:34  
标签:node case string encoding buffer js write length offset

这篇文章主要介绍了node.js中的buffer.write方法使用说明,本文介绍了buffer.write的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
方法说明:

将string使用指定的encoding写入到buffer的offset处。

返回写入了多少个八进制字节。

如果Buffer没有足够的空间来适应整个string,那么将只有string的部分被写入。

语法:

buffer.write(string, [offset], [length], [encoding])

接收参数:

string                  String,被写入buffer的数据.
offet                   number,可选,默认0.数据写入到buffer的位置.
length                Number,可选,默认:buffer.length – offset,要写入数据的长度
encoding           String,需要使用的编码格式,可选,默认为”utf8″.

例子:

buf = new Buffer(256);
 
len = buf.write('u00bd + u00bc = u00be', 0);
 
console.log(len + " bytes: " + buf.toString('utf8', 0, len));

源码:

Buffer.prototype.write = function(string, offset, length, encoding) {
  // allow write(string, encoding)
  if (util.isString(offset) && util.isUndefined(length)) {
    encoding = offset;
    offset = 0;
  // allow write(string, offset[, length], encoding)
  } else if (isFinite(offset)) {
    offset = ~~offset;
    if (isFinite(length)) {
      length = ~~length;
    } else {
      encoding = length;
      length = undefined;
    }
  // XXX legacy write(string, encoding, offset, length) - remove in v0.13
  } else {
    if (!writeWarned) {
      if (process.throwDeprecation)
        throw new Error(writeMsg);
      else if (process.traceDeprecation)
        console.trace(writeMsg);
      else
        console.error(writeMsg);
      writeWarned = true;
    }
    var swap = encoding;
    encoding = offset;
    offset = ~~length;
    length = swap;
  }
  var remaining = this.length - offset;
  if (util.isUndefined(length) || length > remaining)
    length = remaining;
  encoding = !!encoding ? (encoding + '').toLowerCase() : 'utf8';
  if (string.length > 0 && (length < 0 || offset < 0))
    throw new RangeError('attempt to write beyond buffer bounds');
  var ret;
  switch (encoding) {
    case 'hex':
      ret = this.hexWrite(string, offset, length);
      break;
    case 'utf8':
    case 'utf-8':
      ret = this.utf8Write(string, offset, length);
      break;
    case 'ascii':
      ret = this.asciiWrite(string, offset, length);
      break;
    case 'binary':
      ret = this.binaryWrite(string, offset, length);
      break;
    case 'base64':
      // Warning: maxLength not taken into account in base64Write
      ret = this.base64Write(string, offset, length);
      break;
    case 'ucs2':
    case 'ucs-2':
    case 'utf16le':
    case 'utf-16le':
      ret = this.ucs2Write(string, offset, length);
      break;
    default:
      throw new TypeError('Unknown encoding: ' + encoding);
  }
  return ret;
};

学习更多nodejs知识请关注CRMEB

标签:node,case,string,encoding,buffer,js,write,length,offset
From: https://blog.51cto.com/u_15723831/6784062

相关文章

  • Vue利用element ui分栏,并将threejs插入到main
    目录1.在node.js官网下载2.在win+r中输入cmd打开管理员:命令提示符3.cmd命令下载安装淘宝镜像上的npm包4.cmd命令安装vuecli,并验证是否安装成功5.通过vueui命令以图形化界面创建和管理项目6.vue项目创建完成,在终端里安装elementui7.在main.js文件中引入element8.利用element进行......
  • jsp实现浏览器端大文件分块上传
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • 如何使用Apache服务器加载JS和CSS文件
    Apache服务器是一款常见的网页服务器软件,可以运行在多个操作系统下,如Linux、Unix、Windows等。对于网站开发者而言,如何使用Apache服务器来加载JS和CSS文件是一项非常重要的技能。在本文中,我们将为你介绍如何使用Apache服务器来加载JS和CSS文件。一、什么是JS和CSS文件JS文件是......
  • BG后的BUFFER(其实就是LDO的作用)
    BG一般做成1.2V2.5V的居多,加上BUFFER相当于加上LDO,一方面是的vref的电压抬升,另一方面提升电压的带载能力,更好地驱动后面的电路从Vout出来的电流并不是完全完美的直线,会产生文波,为减缓纹波的幅度,会在BUFFER和下面要接电路模块之间接上电容BUFFER的输入对管使用BJT晶体管的目的是......
  • 将json格式的数据快速转换为excel,使用在线工具轻松搞定
    标准的json数据是可以转成excel表格方便阅读的,excel是行列的数据表格也可以转换成json格式数据。 https://uutool.cn/json2excel/ 只要把需要转换的json复制到工具框内,点击转换按钮即可秒转成excel文件。 本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。首发......
  • 大前端一篇文章搞定什么是nodeJs它和NPM关系与应用
    现在前端的入门门槛越来越高了,不再是单纯 html+css+js,各种前端框架层出不穷,各种ui组件库层出不穷。模块化,打包化,各种工具库层出不穷,前端变成大前端 ,甚至前端可以搞定整个项目,通过node作为服务端api,这里我们主角就是nodeJs什么是nodejsjavaScript是一门脚本语言,通常被用来......
  • Reactjs学习-props, state, render之间的关系以及虚拟Dom
    本篇是关于React的基础-渲染以及虚拟domprops,state, render之间的关系当组件的state或者props发生改变时,render函数重新执行当父组件的render函数执行时,子组件的render函数也会重新执行2.虚拟Dom产生背景:react是视图层的框架,数据加JSX模板构成我们的视图,数据会发生改变......
  • canal报错nosuchmethod ..bytebuffer
    解决方法:更新jdk版本与es一致......
  • mq json转换器 JSON泛型反序列化, 多层嵌套,使用 TypeReference
     需求解析JSON,并将其转换为对应的数据结构。例如:转换为Map<String,Object>  ......
  • js中的内置对象
    一、Array数组创建数组对象的两种方式:1.字面量方式2.构造函数newArray()//创建数组的两种方式//1.利用数组字面量vararr=[1,2,3];console.log(arr[0]);//2.利用newArray()vararr1=newArray();//创建了一个空的数组vararr2=newArray(2);//2表示数......