Node.js中由TypeArray初始化Buffer时候的疑问
PHP中文网
PHP中文网 2017-04-17 16:03:13
0
2
429

目前工作中用到了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中文网

认证0级讲师

全部回覆(2)
PHPzhong

1.arr和arr.buffer的初始化問題,使用arr的時候,會新建一個新的存儲空間.
而使用arr.buffer的時候,只是引用了擁有.buffer屬性的arr實例,新創建的存儲空間和arr指向的儲存空間是一個
2.理解了第1題,第2題就很簡單了,buf1指向了一個新的儲存空間,buf2指向了與arr一樣的儲存空間
3.這個不清楚,只能說現象了,buf1輸出了申請空間的首字節的數據,buf2輸出了申請空間的所有字節的數據.我這裡使用了Uint32Array()的結果可以說明。

大家讲道理

不知題主是否明白了問題3,可否告知,謝謝

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板