当前位置: 首页 > news >正文

JS中的常见二进制数据格式

格式描述用途示例
ArrayBuffer固定长度的二进制数据缓冲区,不直接操作具体的数据,而是通过类型数组或DataView对象来读写用于存储和处理大量的二进制数据,如文件、图像等let buffer = new ArrayBuffer(16);
TypedArray基于ArrayBuffer对象的视图,提供特定格式的读写接口用于操作具有特定数据类型的二进制数据let int32View = new Int32Array(buffer);
DataView提供对ArrayBuffer的复杂和灵活读写操作,可以读写任意位置的任意类型的数据当需要精确控制二进制数据的读写位置和格式时使用let dataView = new DataView(buffer);
Blob表示不可变的原始数据,通常是二进制数据或文本数据用于处理文件、图片等二进制数据,可以通过URL.createObjectURL()创建对象URLlet blob = new Blob([arrayBuffer], {type: 'image/jpeg'});
File继承自Blob,表示用户系统上的具体文件用于处理用户上传的文件,可以获取文件名、大小等信息let file = new File([blob], 'filename.jpg', {type: 'image/jpeg'});
Uint8Array8位无符号整数类型数组,用于存储0到255之间的整数用于处理8位图像数据、字节流等let uint8Array = new Uint8Array(buffer);
Uint16Array16位无符号整数类型数组,用于存储0到65535之间的整数用于处理音频数据、图像数据等let uint16Array = new Uint16Array(buffer);
Float32Array32位浮点数类型数组,用于存储浮点数用于处理浮点数的二进制数据,如科学计算、物理模拟等let float32Array = new Float32Array(buffer);

部分使用示例:
 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>二进制格式转换示例</title></head><body><input type="file" id="fileInput" accept="*" /><button onclick="convertFileToBinaryFormats()">转换文件为二进制格式</button><pre id="output"></pre><script>function convertFileToBinaryFormats() {const fileInput = document.getElementById("fileInput");const file = fileInput.files[0];if (!file) {alert("未选择文件");return;}let reader = new FileReader(); // 使用let而不是constreader.onload = function (event) {const arrayBuffer = event.target.result;// ArrayBufferconsole.log("ArrayBuffer:", arrayBuffer);// TypedArray (例如 Uint8Array)const uint8Array = new Uint8Array(arrayBuffer);console.log("Uint8Array:", uint8Array);// DataViewconst dataView = new DataView(arrayBuffer);console.log("DataView:", dataView);// Blobconst blob = new Blob([arrayBuffer], { type: file.type });console.log("Blob:", blob);// 显示部分Uint8Array内容作为示例const output = `文件类型: ${file.type}<br>`;output += `ArrayBuffer长度: ${arrayBuffer.byteLength} 字节<br>`;output += `Uint8Array前10个字节: ${Array.from(uint8Array.slice(0, 10)).map((b) => b.toString(16).padStart(2, "0")).join(" ")}<br>`;document.getElementById("output").textContent = output;};reader.readAsArrayBuffer(file);}</script></body>
</html>

http://www.lryc.cn/news/336031.html

相关文章:

  • uniapp开发h5端使用video播放mp4格式视频黑屏,但有音频播放解决方案
  • Hive的分区与排序
  • Objective-C学习笔记(内存管理、property参数)4.9
  • C语言进阶课程学习记录-第29课 - 指针和数组分析(下)
  • 一起学习python——基础篇(13)
  • SOCKS代理概述
  • AI助力M-OFDFT实现兼具精度与效率的电子结构方法
  • 【数据结构】单链表(一)
  • SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测
  • Coursera吴恩达《深度学习》课程总结(全)
  • C# 操作PDF表单 - 创建、填写、删除PDF表单域
  • Astropy:探索宇宙奥秘的Python工具箱
  • java数据结构与算法刷题-----LeetCode684. 冗余连接
  • 循环神经网络简介
  • 计算机网络 子网掩码与划分子网
  • HUD抬头显示器中如何设计LCD的阳光倒灌实验
  • Shoplazza闪耀Shoptalk 2024,新零售创新解决方案引领行业新篇章!
  • Linux:sprintf、snprintf、vsprintf、asprintf、vasprintf比较
  • Github远程仓库改名字之后,本地git如何配置?
  • Objective-C学习笔记(ARC,分类,延展)4.10
  • 02 Git 之IDEA 集成使用 GitHub(Git同时管理本地仓库和远程仓库)
  • CSS滚动条样式修改
  • 《零秒思考》像麦肯锡精英一样思考 - 三余书屋 3ysw.net
  • 使用docker制作Android镜像(实操可用)
  • 大厂MVP技术JAVA架构师培养
  • uniapp实现文件和图片选择上传功能实现
  • 2024认证杯数学建模C题思路模型代码
  • springcloud项目中,nacos远程的坑
  • 南京航空航天大学-考研科目-513测试技术综合 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分
  • 【python】Flask Web框架