您的位置:首頁技術文章
文章詳情頁

Node.js中由TypeArray初始化Buffer時候的疑問

瀏覽:122日期:2024-07-24 09:25:30

問題描述

目前工作中用到了Node.js, 于是看官方文檔來學習一下。 在Buffer文檔中, 關于使用Buffer.from, 我寫了以下的測試代碼:

> var arr = new Uint16Array(2)undefined> arr[0] = 50005000> arr[1] = 40004000> 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] = 60006000> buf1<Buffer 88 a0>> buf2<Buffer 88 13 70 17>

問題如下:

使用arr和arr.buffer進行初始化, 區別是什么? 這個問題引申出以下問題:

為什么arr的修改會影響buf2而不影響buf1.

對于buf2來說, 1388 == 5000, 但buf1卻只顯示88?

問題解答

回答1:

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

回答2:

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

相關文章:
国产综合久久一区二区三区