찾다

 >  Q&A  >  본문

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일 전425

모든 응답(2)나는 대답할 것이다

  • PHPz

    PHPz2017-04-17 16:05:13

    1. arr, arr.buffer 초기화 문제. arr 사용시 새로운 저장공간이 생성됩니다.
    arr.buffer를 사용할 때 .buffer 속성으로 arr 인스턴스만 참조하면 새로 생성된 저장 공간과 arr이 가리키는 저장 공간은 동일합니다
    2. 첫 번째 질문을 이해한 후 두 번째 질문은 매우 간단합니다. , buf1은 새로운 저장 공간인 b를 가리킵니다. uf2는 arr
    3과 동일한 저장 공간을 가리킵니다. 이는 명확하지 않습니다. buf1은 요청된 공간의 첫 번째 바이트를 출력하고, buf2는 해당 공간의 모든 바이트를 출력합니다. 요청한 공간입니다. Uint32Array()를 사용한 결과를 설명할 수 있습니다.

    회신하다
    0
  • 大家讲道理

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

    질문하시는 분이 3번 질문을 이해하셨는지 모르겠네요, 알려주시면 감사하겠습니다

    회신하다
    0
  • 취소회신하다