Node.js中由TypeArray初始化Buffer时候的疑问
问题描述
目前工作中用到了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()的结果可以说明。
回答2:不知题主是否明白了问题3,可否告知,谢谢
相关文章:
1. javascript - vue 数据更新了。但是dom没有更新,,,,,如图2. javascript - 静态页面引公共头尾文件,js怎么写吖?3. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析4. java - 3个dao的数据根据请求参数选择一个映射到一个url上,怎么写比较好?5. docker api 开发的端口怎么获取?6. html5 - 百度Ueditor代码高亮和代码段滚动条冲突是怎么回事?7. debian - docker依赖的aufs-tools源码哪里可以找到啊?8. javascript - 关于一段 for 循环代码执行顺序的问题9. java基础,求解答。10. javascript - HTML 原生js怎么控制table根据0,1值来显示或者隐藏