博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Buffer对象的总结
阅读量:5256 次
发布时间:2019-06-14

本文共 1861 字,大约阅读时间需要 6 分钟。

1.首先记录下php关于字符串长度的统计

';echo strlen('一二三四五六七八九十');//30echo '
';echo mb_strlen('一二三四五六七八九十','utf-8');//10

 2.Buffer对象为16进制的两位数,即FF 0-225;

var str='王炜';var buf=new Buffer(str,'utf-8');console.log(buf);//
var str='hello,王炜';var buf=new Buffer(str,'utf-8');console.log(buf);//

可以看出中文utf-8占3个元素,字母和半角符号均占1个元素


3.BUffer可以调用length方法,获取长度,也可以下标获取,每个元素都是0-225之间的随机数

var buf=new Buffer(10);//生成长度为10的bufferbuf[1]=22.23;console.log(buf[1]);//22 如果是小数或舍弃小数部分
var buf=new Buffer(10);//生成长度为10的bufferconsole.log(buf.length);//10console.log(buf[8])//0  默认都是0buf[1]=257;console.log(buf[1])//0 大于等于256会在原数基础上减256buf[2]=-1;console.log(buf[2])//如果小于0 会在原数基础上加256

4. Buffer()对象以8kb来界定一个对象是大对象还是小对象

5.BUffer()目前支持的字符串转换 ASCII UTF-8 UTF-16LE/UCS-2 Base64 Binary Hex

new Buffer(str,[encoding]) 默认为UTF-8

buf.write(string,[offset],[length],[encoding])每一个单元可以写入指定的编码 

buf.toString([encoding],[start],[end])将buffer转换为指定的类型 可以设置转换范围

var buf=new Buffer(10);//生成长度为10的bufferbuf.write('王炜','utf-8');console.log(buf)//
汉字以utf-8写入bufconsole.log(buf.toString('hex'))//e78e8be7829c00000000 buf以'hex'格式转为字符串var buf1=new Buffer(10);//字符串以'hex'写入buf1再以utf-8转为字符串buf1.write(buf.toString('hex'),'hex')console.log(buf1.toString('utf-8'));//王炜

 6.Buffer.isEncoding(encoding)判断buffer是否支持该字符编码

 当然,不支持的可以采用iconv(c++写的)和iconv-lite(采用js编写,性能好一点)模块转换

console.log(Buffer.isEncoding('utf-8'))//trueconsole.log(Buffer.isEncoding('hex'))//trueconsole.log(Buffer.isEncoding('GBK'))//false

关于iconv-lite

const iconv=require('iconv-lite');var buf=new Buffer('我是王炜','utf-8');var str=iconv.decode(buf,'GBK');//buffer转换为gbkconsole.log(str)//鎴戞槸鐜嬬倻var str1=iconv.decode(buf,'utf-8');//buffer转换为utf-8console.log(str1)//我是王炜var buf2=iconv.encode(str1,'utf-8');//utf-8转bufferconsole.log(buf2);//
console.log(buf2.toString())//我是王炜

 

转载于:https://www.cnblogs.com/douyaer/p/8017638.html

你可能感兴趣的文章
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
在Ubuntu下配置Apache多域名服务器
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>