安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

关于Node。js之Buffer

2月26日 渡缘祠投稿
  前言
  JavaScript语言自身只有字符串数据类型,没有二进制数据类型。
  但在处理像TCP流或文件流时,必须使用到二进制数据。因此在Node。js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区。
  在Node。js中,Buffer类是随Node内核一起发布的核心库。Buffer库为Node。js带来了一种存储原始数据的方法,可以让Node。js处理二进制数据,每当需要在Node。js中处理IO操作中移动的数据时,就有可能使用Buffer库。
  原始数据存储在Buffer类的实例中。
  一个Buffer类似于一个整数数组,但它对应于V8堆内存之外的一块原始内存。创建Buffer类
  NodeBuffer类可以通过多种方式来创建。
  方法1
  创建长度为10字节的Buffer实例:varbufnewBuffer(10);
  方法2
  通过给定的数组创建Buffer实例:varbufnewBuffer(〔10,20,30,40,50〕);
  方法3
  通过一个字符串来创建Buffer实例:varbufnewBuffer(bianchengsanmei,utf8);
  utf8是默认的编码方式,此外它同样支持以下编码:ascii,utf8,utf16le,ucs2,base64和hex。写入缓冲区
  语法
  写入Node缓冲区的语法如下所示:buf。write(string〔,offset〔,length〕〕〔,encoding〕)
  参数
  参数描述如下:string写入缓冲区的字符串。offset缓冲区开始写入的索引值,默认为0。length写入的字节数,默认为buffer。lengthencoding使用的编码。默认为utf8。
  返回值
  返回实际写入的大小。如果buffer空间不足,则只会写入部分字符串。
  实例bufnewBuffer(256);lenbuf。write(bi);lenbuf。write(bianchengsanmei);console。log(写入字节数:len);
  执行以上代码,输出结果为:nodemain。js写入字节数:15从缓冲区读取数据
  语法
  读取Node缓冲区数据的语法如下所示:buf。toString(〔encoding〔,start〔,end〕〕〕)
  参数
  参数描述如下:encoding使用的编码。默认为utf8。start指定开始读取的索引位置,默认为0。end结束位置,默认为缓冲区的末尾。
  返回值
  解码缓冲区数据并使用指定的编码返回字符串。
  实例bufnewBuffer(26);for(vari0;i26;i){buf〔i〕i97;}console。log(buf。toString(ascii));输出:abcdefghijklmnopqrstuvwxyzconsole。log(buf。toString(ascii,0,5));输出:abcdeconsole。log(buf。toString(utf8,0,5));输出:abcdeconsole。log(buf。toString(undefined,0,5));使用utf8编码,并输出:abcde
  执行以上代码,输出结果为:nodemain。jsabcdefghijklmnopqrstuvwxyzabcdeabcdeabcde将Buffer转换为JSON对象
  语法
  将NodeBuffer转换为JSON对象的函数语法格式如下:buf。toJSON()
  返回值
  返回JSON对象。
  实例varbufnewBuffer(bianchengsanmei);varjsonbuf。toJSON(buf);console。log(json);
  执行以上代码,输出结果为:{type:Buffer,data:〔119,119,119,46,119,51,99,115,99,104,111,111,108,46,99,110〕}缓冲区合并
  语法
  Node缓冲区合并的语法如下所示:Buffer。concat(list〔,totalLength〕)
  参数
  参数描述如下:list用于合并的Buffer对象数组列表。totalLength指定合并后Buffer对象的总长度。
  返回值
  返回一个多个成员合并的新Buffer对象。
  实例varbuffer1newBuffer(编程三昧);varbuffer2newBuffer(bi);varbuffer2newBuffer(bianchengsanmei);varbuffer3Buffer。concat(〔buffer1,buffer2〕);console。log(buffer3内容:buffer3。toString());
  执行以上代码,输出结果为:buffer3内容:编程三昧bianchengsanmei缓冲区比较
  语法
  NodeBuffer比较的函数语法如下所示,该方法在Node。jsv0。12。2版本引入:buf。compare(otherBuffer);
  参数
  参数描述如下:otherBuffer与buf对象比较的另外一个Buffer对象。
  返回值
  返回一个数字,表示buf在otherBuffer之前,之后或相同。
  实例varbuffer1newBuffer(ABC);varbuffer2newBuffer(ABCD);varresultbuffer1。compare(buffer2);if(result0){console。log(buffer1在buffer2之前);}elseif(result0){console。log(buffer1与buffer2相同);}else{console。log(buffer1在buffer2之后);}
  执行以上代码,输出结果为:ABC在ABCD之前拷贝缓冲区
  语法
  Node缓冲区拷贝语法如下所示:buf。copy(target〔,targetStart〔,sourceStart〔,sourceEnd〕〕〕)
  参数
  参数描述如下:targetBuffer要拷贝的Buffer对象。targetStart数字,可选,默认:0sourceStart数字,可选,默认:0sourceEnd数字,可选,默认:buffer。length
  返回值
  没有返回值。
  实例varbuffer1newBuffer(ABC);拷贝一个缓冲区varbuffer2newBuffer(3);buffer1。copy(buffer2);console。log(buffer2content:buffer2。toString());
  执行以上代码,输出结果为:buffer2content:ABC缓冲区裁剪
  Node缓冲区裁剪语法如下所示:buf。slice(〔start〔,end〕〕)
  参数
  参数描述如下:start数字,可选,默认:0end数字,可选,默认:buffer。length
  返回值
  返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是从索引start到end的位置剪切。
  实例varbuffer1newBuffer(youj);剪切缓冲区varbuffer2buffer1。slice(0,2);console。log(buffer2content:buffer2。toString());
  执行以上代码,输出结果为:buffer2content:yo缓冲区长度
  语法Node缓冲区长度计算语法如下所示:buf。
  返回值
  返回Buffer对象所占据的内存长度。
  实例varbuffernewBuffer(bianchengsanmei);缓冲区长度console。log(bufferlength:buffer。length);
  执行以上代码,输出结果为:bufferlength:15
  本文完,感谢阅读!
  学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!
  大家好,我是编程三昧的作者隐逸王,我的公众号是编程三昧,欢迎关注,希望大家多多指教!
  你来,怀揣期望,我有墨香相迎!你归,无论得失,唯以余韵相赠!
  知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!
投诉 评论 转载

阿里腾讯布局NFTNFT在海外的爆火是让人惊叹的,然而国内对于NFT的接触却慢了一点。率先入局的就是国内的互联网巨头公司。今年5月,阿里拍卖推出NFT数字艺术专场,随后支付宝在6月联名敦煌美术研……小米,vivoOPPO我选哪个?自从华为陷入芯片危机后,国产手机的代表就只剩下小米、vivo、OPPO了。要说选哪个,这没有标准答案,每一家都有自己的拿手绝活。消费者如何选择还是要根据自己的预算、需求等……真没想到!OPPOFindX3价格如此坚挺因为品牌属性的问题OPPO的当家旗舰在线上的声音并不大,而且很容易让人遗忘。比如:OPPOFindX3系列,明明是年度最佳旗舰之一,但仅在发布后那几天有点声音,后来线上很少有人……小米,在东南亚智能手机市场也超越三星电子小米小米在欧洲取得出色的成绩Canalys,出货量增加107,占据22的市场份额,三星19小米在东南亚智能手机市场上首次超过三星电子成为龙头企业。国内媒体援引市场调……十周年除了更名,陌陌是也要迈向元宇宙吗?近段时间,陌生人社交赛道不断传出备受外界关注的消息,前有Soul宣布递交招股书,申请以SSR作为代码在纳斯达克上市。此后,有关于探探创始人退出公司具体管理事务,其或将与陌陌进一……梦网科技全资子公司中标中国邮政储蓄银行长号码短信服务项目挖贝网4月6日,梦网科技(002123)发公告称,近日,公司全资子公司深圳市梦网科技发展有限公司(以下简称深圳梦网)以第一名候选人中标中国邮政储蓄银行股份有限公司中国邮政储蓄银……10元能买1000个赞!万物皆可刷,已成产业链日前,媒体报道了调查网红餐厅好评真假难辨!有‘五星’是这样刷出来的,揭露种草经济变味儿,引发关注。数据刷量这一老顽疾,也再次被推到台前。记者调查发现,当前数据刷量依旧猖獗,10……你会放弃苹果手机,来支持国产品牌吗?你会放弃苹果手机,来支持国产品牌吗?是满足我们的虚荣心,还是真的好用。随着科技技术的发展,我国的一些国产品牌有了长足的进步,但依然在国际大品牌之间存在着不小的差距。那么,我们如……2022,你会失业吗?这篇深度反思文章,可能会改变你的职场命文瓜爸我要说一句真话:铁饭碗不是一辈子在一个地方吃饭。而是到哪里都有饭吃。靠得住的不是时代,而是个人,一定要强化个人能力,让你在疯狂的内卷下,仍然无可替代。最……关于Node。js之Buffer前言JavaScript语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在Node。js中,定义了一个Buf……目前性价比高的千元手机哪个好?千元机好推荐其实现在有好几部千元机是特别有竞争力的,而且性能也不俗!首先第一部要介绍的是最近上市的360N5,只要1399就可以买到一部6gb运存的手机,这个估计也是首款……Terra(LUNA)暴跌11,为什么顶级山寨币暴跌?由于情绪恶化导致投资者锁定市场近期的涨幅,Terra(LUNA)在周六引领山寨币大跌。大多数主要的山寨币本周也出现了大幅下跌。LUNA下跌11至一周多低点94。13美元。……
智能豪华电驱SUV华为首款汽车AITO问界M5正式发布安兔兔4月安卓性价比手机榜单虽迟但到,出乎意料被子品牌屠榜调头再启航,字节教育盯上了新赛道Windows12概念来袭!带来全新的视觉体验,更加美观易用近期值得入手的两款手机!颜值高配置强,价格不是很贵英特尔之后,华为欧拉再迎强劲队友,国产系统加速崛起骑手社保问题无法解决,美团市值蒸发1。7万亿港元,王兴无能为预算不多想要换手机?八月份我推荐这三款,都是高性价比预装国产系统的电脑为什么那么贵?(华为擎云),国产物美价廉呢防跳楼抑郁秘术学会放下腾讯90后程序员跳楼身亡一加两大旗舰?一加10Ultra将有潜望式摄像头?一分钟教你把门禁卡写入手机,让手机变成门钥匙,真是太方便了抱朴子内篇抱朴子内篇序天龙八部新版场景是美了但是演技下降了呀汉之星输入法独体字的输入说课稿三年级语文上册总也倒不了的老屋优秀教学设计故意毁坏财物罪陕西定罪数额是多少?有你真的很幸福饿了么蓝骑士发展与保障报告一年晋升1877位骑士为站长队长有关写以和谐为话题作文3篇淘气的蜗牛读月亮与六便士有感17致敬中国医生哭着走过流程笑着离开。它值得,大家快去看吧你用爱温暖了我高中作文

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利