Node.js中由TypeArray初始化Buffer時候的疑問
問題描述
目前工作中用到了Node.js, 于是看官方文檔來學(xué)習(xí)一下。 在Buffer文檔中, 關(guān)于使用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進(jìn)行初始化, 區(qū)別是什么? 這個問題引申出以下問題:
為什么arr的修改會影響buf2而不影響buf1.
對于buf2來說, 1388 == 5000, 但buf1卻只顯示88?
問題解答
回答1:1.arr和arr.buffer的初始化問題,使用arr的時候,會新建一個新的存儲空間. 而使用arr.buffer的時候,只是引用了擁有.buffer屬性的arr實例,新創(chuàng)建的存儲空間和arr指向的存儲空間是一個2.理解了第1題,第2題就很簡單了,buf1指向了一個新的存儲空間,buf2指向了與arr一樣的存儲空間3.這個不清楚,只能說現(xiàn)象了,buf1輸出了申請空間的首字節(jié)的數(shù)據(jù),buf2輸出了申請空間的所有字節(jié)的數(shù)據(jù).我這里使用了Uint32Array()的結(jié)果可以說明。
不知題主是否明白了問題3,可否告知,謝謝
相關(guān)文章:
1. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?2. java - spring boot 如何打包成asp.net core 那種獨(dú)立應(yīng)用?3. java - 在用戶不登錄的情況下,用戶如何添加保存到購物車?4. datetime - Python如何獲取當(dāng)前時間5. javascript - nginx反向代理靜態(tài)資源403錯誤?6. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?7. 安全性測試 - nodejs中如何防m(xù)ySQL注入8. javascript - 關(guān)于apply()與call()的問題9. docker start -a dockername 老是卡住,什么情況?10. python - 調(diào)用api輸出頁面,會有標(biāo)簽出現(xiàn),請問如何清掉?
