Uint8Array 声明

let u8a=new Uint8Array(10);
console.log(u8a);//Uint8Array(10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
console.log(u8a.buffer);//ArrayBuffer{} .bytelength  为10
u8a.set([15,16,17],0)
console.log(u8a);//Uint8Array(10) [15, 16, 17, 0, 0, 0, 0, 0, 0, 0]

比如说,我们想将其中的16,17,0,0拿出来组成一个新的uint8array,那有什么简单的办法,首先看官方api

uint8array 有一个方法

subarray 方法 (Uint8Array)
为此数组获取 ArrayBuffer 存储的新 Uint8Array 视图。

看下面代码

let u8a2=u8a.subarray(1,5);
console.log(u8a2)//Uint8Array(4) [16, 17, 0, 0]

这样大家以为这就是一个新的uint8array数组了,是自己想要的东西
但是看下面代码

console.log(u8a2.buffer);//ArrayBuffer{} .bytelength  为10

虽然u8a2的长度只有4,但是它的buffer的bytelength确为10

那我们用DataView来操作下u8a2看看

let dv=new DataView(u8a2.buffer);
console.log(dv.getUint8());//输出15

上面输出的并不是我们想要的数据,我们想要的是16
所以说,这个subarray会把老uint8arry里面的buffer带过来
我的解决方案是

let u8a2-=new Uint8Array(4)//我们知道我们需要几个长度的数据
u8a2.set(u8a.subarray(1,5),0)//Uint8Array(4) [16, 17, 0, 0]
console.log(u8a2.buffer)//ArrayBuffer{} .bytelength  为4
let dv=new DataView(u8a2.buffer);
console.log(dv.getUint8());//输出16

这样,就算是拷贝之前的数据,而且不用带过老的buffer了

Uint8Array 拷贝操作的坑(buffer)相关推荐

  1. Java如何实现文件拷贝操作和如何正确关闭资源

    使用字节流完成文件的拷贝: 使用字节输入流(FileInputStream)将源文件中的数据读进来,同时使用字节输出流(FileOutputStream)将读进来的数据写到目标文件中,即一边读一边写, ...

  2. 信号发送,槽函数执行,过程中传递的是对象的引用,涉及的拷贝操作

    如果qt的信号和槽之间发送的是对象的引用,传递过程中会发生拷贝操作. 一.跨线程之间 #ifndef __MAIN_WINDOW_H_ #define __MAIN_WINDOW_H_#include ...

  3. Python-文件夹的拷贝操作

    在Python中,想要实现文件夹的拷贝,需使用shutil包,其中文件复制的内置函数为shutil.copy 这里介绍两种拷贝方式: 第一种为文件夹整体拷贝: import os import shu ...

  4. mongoose 执行删除操作的坑

    需求:在后台执行删除用户操作 坑: 1.后端接口接收delete请求,接收不到请求传过来的id 2.根据模型实例化的对象,执行不了删除操作 解决: 1.delete请求是像get请求一样,传值在url ...

  5. 小菜鸡进阶之路.文件操作遇到坑

    学了文件操作,感觉r+模式好多坑,还是不怎么懂,这周学习的知识都不怎么好总结... 转载于:https://www.cnblogs.com/huge-666/p/9563543.html

  6. 搭建confluence服务器(详细操作+踩坑说明)

    linux服务器配置推荐 前提:web服务,文件服务,数据库服务部署在同一台服务器上. 推荐配置 2核 + 4G8G内存 + 300G硬盘 经过实践,4G内存还是不够用. 部署资源 atlassian ...

  7. java取余操作的坑

    %操作慎用!!! 本人比赛时遇到的坑,简单的题但是时间超了 public static void main(String[] args) {//System.currentTimeMillis() / ...

  8. python list remove 删除引用_Python——list列表操作一坑(remove)

    问题发生背景:在一个对象被调用多次时候对象存入了列表暂时保存(主流程不能断开使用了while True),然后实例化了大批对象,具体你可参考打飞机游戏或者坦克大战发射子弹,每个子弹一个实例,创建的多到 ...

  9. 大数据上云第一课:MaxCompute授权和外表操作躲坑指南

    一.子账号创建.AK信息绑定 如果您是第一次使用子账号登录数加平台和使用DataWorks,需要确认以下信息: • 该子账号所属主账号的企业别名. • 该子账号的用户名和密码. • 该子账号的Acce ...

最新文章

  1. 六大主题报告,四大技术专题,AI开发者大会首日精华内容全回顾
  2. checkstyle安装使用
  3. 剑指offer 面试64题
  4. 鼠標滑過表格整行改變背景色
  5. [YTU]_2383 ( 矩形类定义【C++】)
  6. 【arduino】初测ESP32的DAC生成AV视频模拟信号项目:ESP32CompositeVideo
  7. ASP.NET中IP地址,当前用户的方法属性大整合- -
  8. 会员体系架构的设计思路
  9. 通过mysqlnow()函数校正本地(windows)时间与服务器(linux)时间
  10. c# 第七节 编程规范,vs中的各种设置
  11. thinkphp5 return 返回空_杨丞琳演唱会意外踩空,从两层楼高的舞台掉落,李荣浩心疼发文...
  12. 统计面要素中点要素的个数.
  13. c语言迭代埃特金加速算法,5-埃特金加速迭代算法
  14. ECMAScript 语法
  15. 杜国光博士,基于视觉的机器人抓取--物体定位,位姿估计到抓取估计课堂笔记
  16. python寻峰,[LeetCode][Python]162. 寻找峰值
  17. c语言游泳是怎么钓鱼的,不会游泳的钓友进来看 自制饵料钓鲤鱼
  18. 2、通过mos管构成的逻辑门电路
  19. 实战HttpClient 接口调用以及获取token 设置请求头
  20. AJAX技术学院风连衣裙,清新又减龄学院风连衣裙,轻松穿出少女感

热门文章

  1. OSChina 周五乱弹 ——出轨率最高的竟是IT男
  2. java如何定义一个变长数组_如何自定义一个长度可变数组
  3. c语言 int max,C语言 0x7fffffff是多少(也就是INT_MAX,首位是 0,其余都是1,f代表1111)...
  4. PCL Getting Start.
  5. [转] 钉钉的H5性能优化方案
  6. 基于JAVA基于web的老年公寓管理计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  7. ubuntu扩展屏幕
  8. 【分治法】中位数问题和Gray码问题——武汉理工大学算法分析与设计课程实验
  9. Manjaro虚拟机安装常用软件
  10. DO-178B不适用基于SCADE的软件适航认证?