Buffer对象的总结
1.首先记录下php关于字符串长度的统计
<?php
echo strlen('0123456789');//
echo '<br>';
echo strlen('一二三四五六七八九十');//
echo '<br>';
echo mb_strlen('一二三四五六七八九十','utf-8');//
2.Buffer对象为16进制的两位数,即FF 0-225;
var str='王炜';
var buf=new Buffer(str,'utf-8');
console.log(buf);//<Buffer e7 8e 8b e7 82 9c>
var str='hello,王炜';
var buf=new Buffer(str,'utf-8');
console.log(buf);//<Buffer 68 65 6c 6c 6f 2c e7 8e 8b e7 82 9c>
可以看出中文utf-8占3个元素,字母和半角符号均占1个元素
3.BUffer可以调用length方法,获取长度,也可以下标获取,每个元素都是0-225之间的随机数
var buf=new Buffer(10);//生成长度为10的buffer
buf[1]=22.23;
console.log(buf[1]);//22 如果是小数或舍弃小数部分
var buf=new Buffer(10);//生成长度为10的buffer
console.log(buf.length);//
console.log(buf[8])//0 默认都是0
buf[1]=257;
console.log(buf[1])//0 大于等于256会在原数基础上减256
buf[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的buffer
buf.write('王炜','utf-8');
console.log(buf)//<Buffer e7 8e 8b e7 82 9c 00 00 00 00> 汉字以utf-8写入buf
console.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'))//true
console.log(Buffer.isEncoding('hex'))//true
console.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转换为gbk
console.log(str)//鎴戞槸鐜嬬倻
var str1=iconv.decode(buf,'utf-8');//buffer转换为utf-8
console.log(str1)//我是王炜 var buf2=iconv.encode(str1,'utf-8');//utf-8转buffer
console.log(buf2);//<Buffer e6 88 91 e6 98 af e7 8e 8b e7 82 9c>
console.log(buf2.toString())//我是王炜
Buffer对象的总结的更多相关文章
- 箭头函数和Buffer对象
一.箭头函数 普通函数1 var add = function (a, b) { return a + b; } 普通函数2 function add (a, b) { return a + b; } ...
- nodeJS之二进制buffer对象
前面的话 在ES6引入TypedArray之前,JavaScript语言没有读取或操作二进制数据流的机制.Buffer类被引入作为Nodejs的API的一部分,使其可以在TCP流和文件系统操作等场景中 ...
- 《超实用的Node.js代码段》连载一:获取Buffer对象字节长度
我们知道Node.js框架下的Buffer对象能够对二进制数据提供很好的支持,那么获取一个Buffer对象真实的字节长度则是必须要用到的功能了.Node.js框架为开发人员提供了一个Buffer.by ...
- 简化连接Buffer对象的过程
上述一大段代码仅只完成了一件事情,就是连接多个Buffer对象,而这种场景需求将会在多个地方发生,所以,采用一种更优雅的方式来完成该过程是必要的.笔者基于以上的代码封装出一个bufferhelper模 ...
- NIO编程中buffer对象的理解以及API的使用
概念讲解,转自https://www.cnblogs.com/lxzh/archive/2013/05/10/3071680.html ,将的非常好! Buffer 类是 java.nio 的构造基 ...
- Buffer对象与JSON对象相互转换
> buffer=new Buffer('换汤不换药');<Buffer e6 88 91 e7 88 b1 e4 bd a0 ef bc 8c e7 89 a9 e7 90 86> ...
- node种buffer对象数组 深拷贝浅拷贝问题
node的一个上位机和下位机通信的转发程序,用的是udp转发. 其中在发送的时候会进行一次rc4加密数据 出现问题就在这个加密数据这一块,因为这个是升级包广播发送.提前生成了升级用的广播报文,是一个b ...
- JAVA NIO Buffer
所谓的输入,输出,就是把数据移除或移入缓冲区. 硬件不能直接访问用户控件(JVM). 基于存储的硬件设备操控的是固定大小的数据块儿,用户请求的是任意大小的或非对齐的数据块儿. 虚拟内存:使用虚 ...
- Cesium原理篇:6 Renderer模块(1: Buffer)
刚刚结束完地球切片的渲染调度后,打算介绍一下目前大家都很关注的3D Tiles方面的内容,但发现要讲3D Tiles,或者充分理解它,需要对DataSource,Primitive要有基础,而这要求对 ...
随机推荐
- React.js基础入门
本文主要是针对React的一些demo教程.参考了菜鸟教程中的react教程,做了一些总结.Demo的下载链接是 https://github.com/RealAndMe/react-demo 下面要 ...
- Dubbo学习笔记0:RPC框架Dubbo介绍
整体来说,一个公司业务系统的演进流程基本都是从单体应用到多应用.在单体应用时,不同业务模块相互调用直接在本地JVM进程内就可以完成,而变为多个应用时,相互之间进行通信就不能简单的进行本地调用了,因为不 ...
- How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On——RHEL Pacemaker中配置STONITH
本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...
- 判断html是否含有图片
核心代码: $url="http://XXXXX/article/012.html"; $content=file_get_contents($url); //读取文章页面源代码 ...
- HDU 1019 Least Common Multiple GCD
解题报告:求多个数的最小公倍数,其实还是一样,只需要一个一个求就行了,先将答案初始化为1,然后让这个数依次跟其他的每个数进行求最小公倍数,最后求出来的就是所有的数的最小公倍数.也就是多次GCD. #i ...
- 查看oracle实例名
select name from v$database; show parameter service_names;
- java连接redis无法连接,报异常RedisConnectionException
不管是spring还是原生jedis连接redis,如果连不上多半是linux服务器的问题: 1 首先确保redis端口开放: 把6379或者redis的端口开放即可 2 redis.conf配置注释 ...
- 【算法学习】【洛谷】cdq分治 & P3810 三维偏序
cdq是何许人也?请参看这篇:https://wenku.baidu.com/view/3b913556fd0a79563d1e7245.html. 在这篇论文中,cdq提出了对修改/询问型问题(Mo ...
- fc26 url
aarch64 http://linux.yz.yamagata-u.ac.jp/pub/linux/fedora-projects/fedora-secondary/releases/26/Ever ...
- centos6 yum方式升级内核【转】
最近没有时间好久没有写文章了,今天由于需要安装docker学习虚拟容器的知识,需要升级OS的内核.目前我这边使用的OS是centos6.5,内核是2.6版本的,如下: cat /etc/issue u ...