zoukankan      html  css  js  c++  java
  • 005Buffer(缓冲区)

    [A] 基本知识

             更多Buffer信息:https://www.runoob.com/nodejs/nodejs-buffer.html

      1. Buffer的存在就是来弥补传统的数组的不足(不能存储二进制文件)

            2. Buffer的结构和数组很像,操作方法也和数组类似

            3. Buffer不需要引入模块,可直接使用

            4. Buffer中存储的都是二进制数据,但是在显示的时候都是以16进制显示的

                Buffer中的而每一个元素的范围都是从00-ff(16进制,换成十进制为:0-255)的

                因为这是一个字节(8位)的范围

                计算机中:

                    8 bit = 1 Byte(字节)

                    1024 Byte = 1Kb

                    1024 Kb = 1 Mb

                    1024 Mb = 1 Gb

                    1024 Gb = 1Tb

                    1024 Tb = 1Pb

                buffer.length返回的是该buffer在内存中占用的字节长度

                在buffer中,一个英文字符占用内存的一个字节

                        一个中文字占用内存中的三个字节

    [B] 将字符串转换成Buffer

            示例:

                var buf = Buffer.from("hello word")

    [C] 创建指定长度的buffer,默认元素为00

            var buf1 = Buffer.alloc(10);        // 创建一个长度为10的Buffer

            【注】Buffer的长度一旦创建就不能再修改

    [D] 向Buffer中添加数据,

        索引添加值的方法,和数组类似

            buf1[0] = 25;

            Buffer中的每个元素存储范围都是0-255,超出的范围会根据二进制写法,取出后八位保存

            如:

                buf1[0] = 556;      // 该值已超出可以存储的范围

                实际中:

                    // 10 0010 1100(556)    保存的时候之u能取到8位

                    即

                    //    0010 1100(44)     实际保存到的数据为44

       

    [E] Buffer数据访问  

        下标索引,显示出来的数据为10进制

            // buf1实际存储:<Buffer 19 5a ca 7d 00 00 00 00 00 00>

            var a = buf1[1];

                // 返回结果为:90(即十进制的5a)

    [F] buffer中的数据转化成任意进制显示

            buffer中数据默认显示为十进制,可通过.toString()自定义显示数据的进制

            如:

                var a = buf1[1].toString(16);

                    // 返回5a

                var a = buf1[1].toString(2);

                    // 显示1011010

    [G] 创建一个指定长度的Buffer,但是Buffer可能含有敏感数据

             var buf1 = Buffer.allocUnsafe(10);

                // 返回的值可能包含有数据,并非全是00

    [H] Buffer叫做缓冲区

            用户向node服务器请求数据,发送的请求是二进制的,这些请求被保存在缓冲区Buffer中,

            node服务器将数据发送给用户时,发送的数据也是二进制,也要保存在缓冲区Buffer中。

  • 相关阅读:
    Pytorch版本yolov3源码阅读
    Darknet卷基层浅层特征可视化教程
    YOLOv3-darknet 内容解析
    YOLOv2-darknet 内容解析
    YOLOv1-darknet 内容解析
    Qt5.2+opencv2.4.9配置安装过程
    Android程序示例
    【Cuda编程】加法归约
    算法设计与分析课程的时间空间复杂度
    【算法分析】实验 4. 回溯法求解0-1背包等问题
  • 原文地址:https://www.cnblogs.com/carreyBlog/p/15548788.html
Copyright © 2011-2022 走看看