suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Node.js中由TypeArray初始化Buffer时候的疑问

目前工作中用到了Node.js, 于是看官方文档来学习一下。 在Buffer文档中, 关于使用Buffer.from, 我写了以下的测试代码:

> var arr = new Uint16Array(2)
undefined
> arr[0] = 5000
5000
> arr[1] = 4000
4000
> var buf1 = Buffer.from(arr)
undefined
> var buf2 = Buffer.from(arr.buffer)
undefined
> buf1
<Buffer 88 a0>
> buf2
<Buffer 88 13 a0 0f>
> arr[1] = 6000
6000
> buf1
<Buffer 88 a0>
> buf2
<Buffer 88 13 70 17>

问题如下:

  1. 使用arr和arr.buffer进行初始化, 区别是什么?
    这个问题引申出以下问题:

  2. 为什么arr的修改会影响buf2而不影响buf1.

  3. 对于buf2来说, 1388 == 5000, 但buf1却只显示88?

PHP中文网PHP中文网2786 Tage vor427

Antworte allen(2)Ich werde antworten

  • PHPz

    PHPz2017-04-17 16:05:13

    1.arr和arr.buffer的初始化问题,使用arr的时候,会新建一个新的存储空间.
    而使用arr.buffer的时候,只是引用了拥有.buffer属性的arr实例,新创建的存储空间和arr指向的存储空间是一个
    2.理解了第1题,第2题就很简单了,buf1指向了一个新的存储空间,buf2指向了与arr一样的存储空间
    3.这个不清楚,只能说现象了,buf1输出了申请空间的首字节的数据,buf2输出了申请空间的所有字节的数据.我这里使用了Uint32Array()的结果可以说明。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:05:13

    不知题主是否明白了问题3,可否告知,谢谢

    Antwort
    0
  • StornierenAntwort