Buffer.js 代码如下
/*----------创建Buffer实例-----------*/ //创建方法1,分配10个字节的缓存 var buf1 = new Buffer(10); //创建方法2,指定字节数组(数组元素大小在[0,255]之间) var buf2 = new Buffer([255,0,97,158]); var buf2_extend = new Buffer(buf2); //创建方法3,指定字符串(编码可为"ascii","utf8","utf16le","ucs2","base64","hex",默认为"utf-8",) var buf3 = new Buffer('缓冲区内容','utf-8'); var buf4 = new Buffer('缓冲区内容'); /*-----------Buffer类方法------------*/ //合并缓冲区 //Buffer.concat(list[, totalLength]) var concatBuffer = Buffer.concat([new Buffer([0xaa,0xaa]),buf2]); console.log('合并的内容:',concatBuffer); var concatBuffer2 = Buffer.concat([new Buffer([0xaa,0xaa]),buf2],4); console.log('限制合并总字节数的合并内容:',concatBuffer2); /*-----------Buffer类实例属性------------*/ //返回Buffer实例的内存长度 console.log('buf4创建的缓冲区的字节长度:',buf4.length); /*-----------Buffer类实例方法------------*/ //读取缓冲区,解码缓冲区数据并使用指定编码返回字符串 //格式如buf.toString([encoding[, start[, end]]]) //start,指定开始读取缓冲区索引的位置,默认为0 //end,结束位置(读取内容不包含end),默认为buf.length console.log('buf4创建的缓冲区内容:',buf4.toString()); var readContent = buf4.toString('utf8',3,8); console.log('读取buf4部分内容:',readContent,'读取的内容的字符长度为:', readContent.length); //写入缓冲区并返回实际写入的字节数 //空间不足时写入部分字符串,但不写入部分字符 //格式如buf.write(string[, offset[, length]][, encoding]) //offset,开始写入缓冲区的索引值,默认为0;length,写入的字节数,默认为buf4.length-offset; //encoding,使用的编码,默认为"utf-8" var len = buf4.write('这里是重写的缓冲区内容,部分可见'); console.log('写入缓冲区buf4字节数:',len); console.log('写入后buf4缓冲区内容:',buf4.toString()); //获取或设置缓冲区指定字节 console.log('buf2[2]:',buf2[2]); buf2[2] = 98;/*0x62*/ console.log('buf2:',buf2); //用指定的字节填充缓冲区 //格式如buf.fill(value[, offset][, end]) buf1.fill(97); console.log('填充后的缓冲区为:',buf1.toString()); //把缓冲区字节数组转化为json的组织方式 var jsonData = buf4.toJSON(); console.log('buf4的字节数组表达方式转化为json后:',jsonData); //比较俩换冲区,返回值为-1表示第一个缓冲区在前,0表示俩缓冲区相同,1表示第一个缓冲区在后 var compareResult = new Buffer('abcde').compare(new Buffer([97,98,99,100,101,102])); console.log('比较后返回的数字:',compareResult); //比较俩缓冲区是否相等,返回布尔值 var equalResult = new Buffer('abcde').equals(new Buffer([97,98,99,100,101])); console.log('是否相等:',equalResult); //拷贝缓冲区 //格式为buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]]) //targetStart默认为0,sourceStart默认为0,souceEnd默认为buf.length buf4.copy(buf1); console.log('拷贝自buf4的缓冲区内容:',buf1.toString()); //裁剪缓冲区,返回新的缓冲区,但裁剪区域与原缓冲区共用内存 //格式为buf.slice([start[, end]]) //负数索引从尾部算起 var sliceBuffer = buf4.slice(4); console.log('剪切自buf4的缓冲区内容:',sliceBuffer.toString(), '字符长度为:',sliceBuffer.toString().length); sliceBuffer.write('插',2); console.log('修改sliceBuffer后buf4的内容:',buf4.toString()); var buf5 = new Buffer(7); buf5.fill(98); //写入无符号整数,大端对齐(最高48位) //格式为buf.writeUIntBE(value, offset, byteLength[, noAssert]) //offset为buffer的偏移量,byteLength为从右算起写入的value字节数,noAssert默认为false //noAssert为false时校验其它参数的有效性,此时byteLength必须等于value的字节长度 //且offset + byteLength <= buf.length; //noAssert为true时,不校验参数的有效性; buf5.writeUIntBE(0x1234567890ab,3,5,true);/*大端对齐依次写入34567890ab其中ab超出*/ console.log('大端对齐写入无符号整数',buf5); buf5.fill(98); //写入无符号整数,小端对齐(最高48位) buf5.writeUIntLE(0x1234567890ab,3,5,true);/*小端对齐依次写入ab90785634其中34超出*/ console.log('小端对齐写入无符号整数',buf5); buf5.writeUIntBE(300,3,4); //读取无符号整数,大端对齐(最高48位) //格式为buf.readUIntBE(offset, byteLength[, noAssert]) console.log('读取无符号整数内容(大端对齐):',buf5.readUIntBE(3,4)); buf5.writeUIntLE(300,3,4); //读取无符号整数,小端对齐(最高48位) console.log("读取无符号整数内容(小端对齐):",buf5.readUIntLE(3,4)); buf5.fill(98); //写入有符号整数,大端对齐(最高48位) buf5.writeIntBE(10,0,4);/*noAssert默认为false*/ //读取有符号整数,大端对齐(最高48位) console.log('读取有符号整数内容(大端对齐):',buf5.readIntBE(0,4));/*noAssert为false*/ //写入有符号整数,小端对齐(最高48位) buf5.writeIntLE(10,0,4); //读取有符号整数,小端对齐(最高48位) console.log("读取有符号整数内容(小端对齐):",buf5.readIntLE(0,4)); var fixBitNumber = new Buffer(65); fixBitNumber.fill(0x62); //写入8bit的无符号整数 //格式为buf.writeUInt8(value, offset[, noAssert]) fixBitNumber.writeUInt8(255,0); //读取8bit的无符号整数 console.log('8bit的无符号整数:',fixBitNumber.readUInt8(0)); //写入16bit的无符号整数,大端对齐 //格式为buf.writeUInt16BE(value, offset[, noAssert]) fixBitNumber.writeUInt16BE(255,3); //读取16bit的无符号整数 console.log('16bit的无符号整数(大端对齐):',fixBitNumber.readUInt16BE(3)); //写入16bit的无符号整数,小端对齐 //格式为buf.writeUInt16LE(value, offset[, noAssert]) fixBitNumber.writeUInt16LE(255,3); //读取16bit的无符号整数 console.log('16bit的无符号整数(小端对齐):',fixBitNumber.readUInt16LE(3)); //写入32bit的无符号整数,大端对齐 //格式为buf.writeUInt32BE(value, offset[, noAssert]) fixBitNumber.writeUInt32BE(255,3); //读取32bit的无符号整数 console.log('32bit的无符号整数(大端对齐):',fixBitNumber.readUInt32BE(3)); //写入32bit的无符号整数,小端对齐 //格式为buf.writeUInt32LE(value, offset[, noAssert]) fixBitNumber.writeUInt32LE(255,3); //读取32bit的无符号整数 console.log('32bit的无符号整数(小端对齐):',fixBitNumber.readUInt32LE(3)); fixBitNumber.fill(0x62); //写入8bit的有符号整数 //格式为buf.writeInt8(value, offset[, noAssert]) fixBitNumber.writeInt8(-128,0); //读取8bit的有符号整数 console.log('8bit的有符号整数:',fixBitNumber.readInt8(0)); //写入16bit的有符号整数,大端对齐 //格式为buf.writeInt16BE(value, offset[, noAssert]) fixBitNumber.writeInt16BE(-255,3); //读取16bit的有符号整数 console.log('16bit的有符号整数(大端对齐):',fixBitNumber.readInt16BE(3)); //写入16bit的有符号整数,小端对齐 //格式为buf.writeInt16LE(value, offset[, noAssert]) fixBitNumber.writeInt16LE(-255,3); //读取16bit的有符号整数 console.log('16bit的有符号整数(小端对齐):',fixBitNumber.readInt16LE(3)); //写入32bit的有符号整数,大端对齐 //格式为buf.writeInt32BE(value, offset[, noAssert]) fixBitNumber.writeInt32BE(-255,3); //读取32bit的有符号整数 console.log('32bit的有符号整数(大端对齐):',fixBitNumber.readInt32BE(3)); //写入32bit的有符号整数,小端对齐 //格式为buf.writeInt32LE(value, offset[, noAssert]) fixBitNumber.writeInt32LE(-255,3); //读取32bit的有符号整数 console.log('32bit的有符号整数(小端对齐):',fixBitNumber.readInt32LE(3)); //32bit浮点数 fixBitNumber.writeFloatBE(30.25,1); console.log('双浮点数大端对齐:',fixBitNumber.readFloatBE(1)); fixBitNumber.writeFloatLE(-30.25,2); console.log('双浮点数小端对齐:',fixBitNumber.readFloatLE(2)); //64bit双精度 fixBitNumber.writeDoubleBE(64.125,1); console.log('双精度数大端对齐:',fixBitNumber.readDoubleBE(1)); fixBitNumber.writeDoubleLE(-64.125,1); console.log('双精度数小端对齐:',fixBitNumber.readDoubleLE(1));
运行结果如下:
>node Buffer.js 合并的内容: <Buffer aa aa ff 00 61 9e> 限制合并总字节数的合并内容: <Buffer aa aa ff 00> buf4创建的缓冲区的字节长度: 15 buf4创建的缓冲区内容: 缓冲区内容 读取buf4部分内容: 冲�� 读取的内容的字符长度为: 3 写入缓冲区buf4字节数: 15 写入后buf4缓冲区内容: 这里是重写 buf2[2]: 97 buf2: <Buffer ff 00 62 9e> 填充后的缓冲区为: aaaaaaaaaa buf4的字节数组表达方式转化为json后: { type: 'Buffer', data: [ 232, 191, 153, 233, 135, 140, 230, 152, 175, 233, 135, 141, 229, 134, 153 ] } 比较后返回的数字: -1 是否相等: true 拷贝自buf4的缓冲区内容: 这里是� 剪切自buf4的缓冲区内容: ��是重写 字符长度为: 5 修改sliceBuffer后buf4的内容: 这里插重写 大端对齐写入无符号整数 <Buffer 62 62 62 34 56 78 90> 小端对齐写入无符号整数 <Buffer 62 62 62 ab 90 78 56> 读取无符号整数内容(大端对齐): 300 读取无符号整数内容(小端对齐): 300 读取有符号整数内容(大端对齐): 10 读取有符号整数内容(小端对齐): 10 8bit的无符号整数: 255 16bit的无符号整数(大端对齐): 255 16bit的无符号整数(小端对齐): 255 32bit的无符号整数(大端对齐): 255 32bit的无符号整数(小端对齐): 255 8bit的有符号整数: -128 16bit的有符号整数(大端对齐): -255 16bit的有符号整数(小端对齐): -255 32bit的有符号整数(大端对齐): -255 32bit的有符号整数(小端对齐): -255 双浮点数大端对齐: 30.25 双浮点数小端对齐: -30.25 双精度数大端对齐: 64.125 双精度数小端对齐: -64.125
相关推荐
总的来说,Buffer.zip_buffer是一个实现了跨平台缓冲区操作的库,它在Buffer.cpp和Buffer.h中定义了缓冲区的创建、管理和数据交换的函数。这个库对于需要高效、可靠地处理大量数据的软件项目来说非常有用,无论是在...
System.out.println("Buffered LineString: " + buffer.toText()); } catch (ParseException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们首先导入了必要的JTS库,然后创建了一个`WKTReader`对象...
在Linux系统中,缓冲区(Buffer)是一种重要的数据管理机制,尤其在嵌入式系统和多线程编程中,它能有效地提升系统性能并优化资源的利用率。标题“linux_buffer_module.rar_buffer缓冲”指的是Linux内核中的缓冲区...
在Google Earth Engine (GEE) 中,可以使用ee.Algorithms.Buffer()方法来实现单个矢量的缓冲区构建,使用ee.FeatureCollection().map()方法来实现矢量集合的缓冲区构建。 以下是具体的步骤: 单个矢量的缓冲区构建...
在计算机科学领域,Buffer(缓冲区)是一种重要的概念,它在数据处理中起着至关重要的作用。Buffer的应用广泛,特别是在网络编程,尤其是Socket编程中,它扮演着数据传输的桥梁角色。本文将深入探讨Buffer的基本原理...
本文将深入探讨如何使用环形缓冲区(Circle Buffer)技术优化STM32的串口接收功能。 串口通信,全称通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART),是一种简单但实用的串行通信协议,...
SuperMap作为一款强大的GIS软件,提供了“缓冲区分析”功能,即“Buffer_Query”对象,用于创建围绕特定地理特征的区域,这些区域的大小与特征的距离有关。在本篇文章中,我们将深入探讨SuperMap中的缓冲区分析及其...
在这个场景中,"pb_buffer.rar_buffer" 提到的 pb_buffer 可能是一个特定的缓冲区实现,用于处理特定的数据格式或协议。 在 pb_buffer.c 文件中,我们可以预期找到 C 语言编写的源代码,它可能定义了一个名为 pb_...
在C#中,我们需要先创建一个点对象,然后使用IGeometry.Buffer方法生成缓冲区。这通常涉及到坐标系统的转换和单位的统一。 2. **线缓冲区**:线缓冲区是由线对象两侧向外扩展的带状区域。这可能产生复杂的多边形...
`Buffer.compare()`方法的主要功能是返回一个整数值,表示两个缓冲区的相对顺序。如果第一个缓冲区在字节顺序上小于第二个,则返回负值;如果两者相等,则返回零;如果第一个缓冲区大于第二个,则返回正值。这个方法...
6. **缓冲区拼接**:`Buffer.concat(list[, totalLength])`,将多个Buffer对象合并成一个新的Buffer。 7. **获取缓冲区长度**:`buffer.length`,返回Buffer对象的总长度。 在"将数组存放在BUFFER中"这个场景下,...
1. 缓冲区理论:如何设计和管理多缓冲区系统以优化数据传输。 2. 继电器建模:如何在MATLAB中创建继电器的数学模型,模拟其开关特性。 3. 延迟系统分析:理解和处理由硬件、软件或通信链路引起的延迟。 4. Simulink...
环形缓冲区(Ring Buffer)是一种在计算机编程中常见的数据结构,特别是在实时系统、嵌入式系统以及网络通信等领域有着广泛的应用。它是一种利用有限内存空间实现先进先出(FIFO,First In First Out)原则的数据...
在这个“ringbuffer.zip”压缩包中,包含了两个文件:`ringbuffer.c`和`ringbuffer.h`,它们分别代表了环形缓冲区的实现代码和头文件,通常用于C语言环境。 首先,`ringbuffer.h`是头文件,它定义了环形缓冲区的...
环形缓冲区(CircleBuffer),又称为循环缓冲区或环形队列,是一种高效的数据结构,常用于在多个线程间共享数据或者处理实时数据流。它的设计思想是利用一个固定大小的数组,通过两个指针(读指针和写指针)来追踪已...
circular_buffer是Boost库中的一个数据结构,它是一个动态数组,其特点是可以在两端进行插入和删除操作,当缓冲区满时,新元素会替换旧元素,形成一种循环更新的效果。 二、circular_buffer的特性 1. 固定大小:...
安全缓冲区更安全的Node.js缓冲区API 在所有版本的Node.js中使用新的Node.js缓冲区API( Buffer.from , Buffer.alloc , Buffer.allocUnsafe , Buffer.allocUnsafeSlow )。 在可用时使用内置实现。安装npm ...
printf("缓冲区字符为=%s",buffer); } void fun1(){ printf("Call fun1"); while(1){ printf("liulele"); } } int main( ){ char a[100]; printf("Address of fun1=%p\n",fun1);//打印存储用于攻击的可用...
在Buffer.h中,可能定义了环形缓冲区的数据结构(如`struct Buffer`),以及相关的操作函数原型,如`init_buffer`用于初始化缓冲区,`write_to_buffer`用于向缓冲区写入数据,`read_from_buffer`用于从缓冲区读取...
环形缓冲区(Circular Buffer),又称循环队列,是一种数据结构,通常用于实现高效的缓存机制。它在一个固定大小的数组中进行操作,当缓冲区满时,新的元素会覆盖最旧的元素,而不是像传统缓冲区那样等待空间释放。...