Uint8Array 拷贝操作的坑(buffer)
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)相关推荐
- Java如何实现文件拷贝操作和如何正确关闭资源
使用字节流完成文件的拷贝: 使用字节输入流(FileInputStream)将源文件中的数据读进来,同时使用字节输出流(FileOutputStream)将读进来的数据写到目标文件中,即一边读一边写, ...
- 信号发送,槽函数执行,过程中传递的是对象的引用,涉及的拷贝操作
如果qt的信号和槽之间发送的是对象的引用,传递过程中会发生拷贝操作. 一.跨线程之间 #ifndef __MAIN_WINDOW_H_ #define __MAIN_WINDOW_H_#include ...
- Python-文件夹的拷贝操作
在Python中,想要实现文件夹的拷贝,需使用shutil包,其中文件复制的内置函数为shutil.copy 这里介绍两种拷贝方式: 第一种为文件夹整体拷贝: import os import shu ...
- mongoose 执行删除操作的坑
需求:在后台执行删除用户操作 坑: 1.后端接口接收delete请求,接收不到请求传过来的id 2.根据模型实例化的对象,执行不了删除操作 解决: 1.delete请求是像get请求一样,传值在url ...
- 小菜鸡进阶之路.文件操作遇到坑
学了文件操作,感觉r+模式好多坑,还是不怎么懂,这周学习的知识都不怎么好总结... 转载于:https://www.cnblogs.com/huge-666/p/9563543.html
- 搭建confluence服务器(详细操作+踩坑说明)
linux服务器配置推荐 前提:web服务,文件服务,数据库服务部署在同一台服务器上. 推荐配置 2核 + 4G8G内存 + 300G硬盘 经过实践,4G内存还是不够用. 部署资源 atlassian ...
- java取余操作的坑
%操作慎用!!! 本人比赛时遇到的坑,简单的题但是时间超了 public static void main(String[] args) {//System.currentTimeMillis() / ...
- python list remove 删除引用_Python——list列表操作一坑(remove)
问题发生背景:在一个对象被调用多次时候对象存入了列表暂时保存(主流程不能断开使用了while True),然后实例化了大批对象,具体你可参考打飞机游戏或者坦克大战发射子弹,每个子弹一个实例,创建的多到 ...
- 大数据上云第一课:MaxCompute授权和外表操作躲坑指南
一.子账号创建.AK信息绑定 如果您是第一次使用子账号登录数加平台和使用DataWorks,需要确认以下信息: • 该子账号所属主账号的企业别名. • 该子账号的用户名和密码. • 该子账号的Acce ...
最新文章
- 六大主题报告,四大技术专题,AI开发者大会首日精华内容全回顾
- checkstyle安装使用
- 剑指offer 面试64题
- 鼠標滑過表格整行改變背景色
- [YTU]_2383 ( 矩形类定义【C++】)
- 【arduino】初测ESP32的DAC生成AV视频模拟信号项目:ESP32CompositeVideo
- ASP.NET中IP地址,当前用户的方法属性大整合- -
- 会员体系架构的设计思路
- 通过mysqlnow()函数校正本地(windows)时间与服务器(linux)时间
- c# 第七节 编程规范,vs中的各种设置
- thinkphp5 return 返回空_杨丞琳演唱会意外踩空,从两层楼高的舞台掉落,李荣浩心疼发文...
- 统计面要素中点要素的个数.
- c语言迭代埃特金加速算法,5-埃特金加速迭代算法
- ECMAScript 语法
- 杜国光博士,基于视觉的机器人抓取--物体定位,位姿估计到抓取估计课堂笔记
- python寻峰,[LeetCode][Python]162. 寻找峰值
- c语言游泳是怎么钓鱼的,不会游泳的钓友进来看 自制饵料钓鲤鱼
- 2、通过mos管构成的逻辑门电路
- 实战HttpClient 接口调用以及获取token 设置请求头
- AJAX技术学院风连衣裙,清新又减龄学院风连衣裙,轻松穿出少女感
热门文章
- OSChina 周五乱弹 ——出轨率最高的竟是IT男
- java如何定义一个变长数组_如何自定义一个长度可变数组
- c语言 int max,C语言 0x7fffffff是多少(也就是INT_MAX,首位是 0,其余都是1,f代表1111)...
- PCL Getting Start.
- [转] 钉钉的H5性能优化方案
- 基于JAVA基于web的老年公寓管理计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- ubuntu扩展屏幕
- 【分治法】中位数问题和Gray码问题——武汉理工大学算法分析与设计课程实验
- Manjaro虚拟机安装常用软件
- DO-178B不适用基于SCADE的软件适航认证?