zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JS方法Node 使用 说明 Buffer Write
2023-06-13 09:15:32 时间

方法说明:

将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=newBuffer(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){
 //allowwrite(string,encoding)
 if(util.isString(offset)&&util.isUndefined(length)){
   encoding=offset;
   offset=0;
 //allowwrite(string,offset[,length],encoding)
 }elseif(isFinite(offset)){
   offset=~~offset;
   if(isFinite(length)){
     length=~~length;
   }else{
     encoding=length;
     length=undefined;
   }
 //XXXlegacywrite(string,encoding,offset,length)-removeinv0.13
 }else{
   if(!writeWarned){
     if(process.throwDeprecation)
       thrownewError(writeMsg);
     elseif(process.traceDeprecation)
       console.trace(writeMsg);
     else
       console.error(writeMsg);
     writeWarned=true;
   }
   varswap=encoding;
   encoding=offset;
   offset=~~length;
   length=swap;
 }
 varremaining=this.length-offset;
 if(util.isUndefined(length)||length>remaining)
   length=remaining;
 encoding=!!encoding?(encoding+"").toLowerCase():"utf8";
 if(string.length>0&&(length<0||offset<0))
   thrownewRangeError("attempttowritebeyondbufferbounds");
 varret;
 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:maxLengthnottakenintoaccountinbase64Write
     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:
     thrownewTypeError("Unknownencoding:"+encoding);
 }
 returnret;
};