返回顶部
首页 > 资讯 > 精选 >js二进制数据及其互相转化如何实现
  • 804
分享到

js二进制数据及其互相转化如何实现

2023-07-05 06:07:11 804人浏览 八月长安
摘要

这篇文章主要介绍“js二进制数据及其互相转化如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js二进制数据及其互相转化如何实现”文章能帮助大家解决问题。file在js中有很多二进制数据,有fi

这篇文章主要介绍“js二进制数据及其互相转化如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js二进制数据及其互相转化如何实现”文章能帮助大家解决问题。

file

在js中有很多二进制数据,有file,base64,Blob,ArrayBuffer,FileReader。这些二进制数据在文件导出和下载的时候是经常会用到的,我们这篇文章就是介绍这些二进制数据以及它们之间的转化。

文件(File)接口提供有关文件的信息,并允许网页中的 javascript 访问其内容。实际上,File 对象是特殊类型的 Blob,且可以用在任意的 Blob 类型的 context 中。Blob 的属性和方法都可以用于 File 对象。

file文件

file文件一般有两种来源

  • <input> 元素上选择文件后返回的 FileList 对象;

  • 文件拖放操作生成的 DataTransfer 对象;

每个 File 对象都包含以下属性,这些属性都继承自 Blob 对象:

  • lastModified:引用文件最后修改日期,为自1970年1月1日0:00以来的毫秒数;

  • lastModifiedDate:引用文件的最后修改日期;

  • name:引用文件的文件名;

  • size:引用文件的文件大小;

  • type:文件的媒体类型(MIME);

  • WEBkitRelativePath:文件的路径或 URL。

base64

Base64 是一种基于64个可打印字符来表示二进制数据的表示方法。Base64 编码普遍应用于需要通过被设计为处理文本数据的媒介上储存和传输二进制数据而需要编码该二进制数据的场景。这样是为了保证数据的完整并且不用在传输过程中修改这些数据。

Blob

Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

也就是说blob对象是原始二进制数据对象,是不可修改的。

blob的用法

new Blob(array, options);

array:由 ArrayBufferArrayBufferViewBlobDOMString 等对象构成的,将会被放进 Blob

options:可选的 BlobPropertyBag 字典,它可能会指定如下两个属性

type:默认值为 "",表示将会被放入到 blob 中的数组内容的 MIME 类型。

endings:默认值为"transparent",用于指定包含行结束符\n字符串如何被写入,不常用。

ArrayBuffer

ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。ArrayBuffer 的内容不能直接操作,只能通过 DataView 对象或 TypedArrray 对象来访问。这些对象用于读取和写入缓冲区内容。

TypedArray:用来生成内存的视图,通过9个构造函数,可以生成9种数据格式的视图。

  • Int8Array

  • Uint8Array

  • Uint8ClampedArray

  • Int16Array

  • Unit16Array

  • Int32Array

  • Uint32Array

  • Float32Array

  • Float64Array

DataViews:用来生成内存的视图,可以自定义格式和字节序。

ArrayBuffer的使用

new ArrayBuffer(bytelength)

FileReader

FileReader用于读取文件并提取其内容, 可以将 Blob 读取为不同的格式。

FileReader的使用

创建

const reader = new FileReader();

二进制类型数据的互相转化

file转base64

let reader = new FileReader();reader.readAsDataURL(file[0])

base64转blob

const base64toBlob = (base64Data, contentType, sliceSize) => {  const byteCharacters = atob(base64Data);  const byteArrays = [];  for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {    const slice = byteCharacters.slice(offset, offset + sliceSize);    const byteNumbers = new Array(slice.length);    for (let i = 0; i < slice.length; i++) {      byteNumbers[i] = slice.charCodeAt(i);    }    const byteArray = new Uint8Array(byteNumbers);    byteArrays.push(byteArray);  }  const blob = new Blob(byteArrays, {type: contentType});  return blob;}

blob转ArrayBuffer

function blobToArrayBuffer(blob) {   return new Promise((resolve, reject) => {      const reader = new FileReader();      reader.onload = () => resolve(reader.result);      reader.onerror = () => reject;      reader.readAsArrayBuffer(blob);  });}

blob转base64

function blobToBase64(blob) {  return new Promise((resolve) => {    const reader = new FileReader();    reader.onloadend = () => resolve(reader.result);    reader.readAsDataURL(blob);  });}

ArrayBuffer转blob

const blob = new Blob([new Uint8Array(buffer, byteOffset, length)]);

ArrayBuffer转base64

const base64 = btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));

base64转file

const base64ConvertFile = function (urlData, filename) { // 64转file    if (typeof urlData != 'string') {        return;    }    let arr = urlData.split(',')    let type = arr[0].match(/:(.*?);/)[1]    let fileExt = type.split('/')[1]    let bstr = atob(arr[1])    let n = bstr.length    let u8arr = new Uint8Array(n)    while (n--) {        u8arr[n] = bstr.charCodeAt(n);    }    return new File([u8arr], 'filename.' + fileExt, {        type: type    });}

关于“js二进制数据及其互相转化如何实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: js二进制数据及其互相转化如何实现

本文链接: https://lsjlt.com/news/350134.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • js二进制数据及其互相转化如何实现
    这篇文章主要介绍“js二进制数据及其互相转化如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js二进制数据及其互相转化如何实现”文章能帮助大家解决问题。file在js中有很多二进制数据,有fi...
    99+
    2023-07-05
  • js二进制数据及其互相转化实现详解
    目录filefile文件base64Blobblob的用法ArrayBufferArrayBuffer的使用FileReaderFileReader的使用二进制类型数据的互相转化fi...
    99+
    2023-02-27
    js二进制数据互相转化 js二进制数据转化
  • C语言实现十六进制与二进制的相互转换
    目录十六进制->二进制二进制->十六进制本文中的代码可以将文件中的十六进制存储与二进制存储相互转换。 十六进制->二进制 原理是:每两位存储为一个字符(char)保...
    99+
    2022-11-13
    C语言 十六进制转二进制 C语言 二进制转十六进制 C语言 二进制 十六进制
  • Java图片与二进制相互转换怎么实现
    这篇文章主要介绍了Java图片与二进制相互转换怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java图片与二进制相互转换怎么实现文章都会有所收获,下面我们一起来看看吧。1、下面是一个完整的代码示例指定文...
    99+
    2023-07-05
  • C#实现十六进制与十进制相互转换以及及不同进制表示
    目录前言C#中数字的进制表示形式十六进制转十进制代码实现十六进制转十进制C#内置方法16转10进制Convert.ToInt32()int.Parse()和int.TryParse十...
    99+
    2024-04-02
  • js如何操作二进制数据
    小编给大家分享一下js如何操作二进制数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先是新建一个socket:var&nbs...
    99+
    2024-04-02
  • Python如何实现图像的二进制与base64互转
    这篇“Python如何实现图像的二进制与base64互转”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现图...
    99+
    2023-06-29
  • Java图片与二进制相互转换实现示例讲解
    目录1、下面是一个完整的代码示例2、如何判断 base64 图片的格式3、将网络图片转为 base64 字符串4、将 base64 字符串转为图片输出5、将文件转为 base64 字...
    99+
    2023-03-19
    Java图片与二进制转换 Java图片转换二进制
  • jquery如何实现十进制转二进制
    这篇文章主要介绍了jquery如何实现十进制转二进制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery如何实现十进制转二进制文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • MySQL如何实现横纵表相互转化
    这篇文章主要讲解了MySQL如何实现横纵表相互转化,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。本文实例讲述了MySQL横纵表相互转化操作实现方法。分享给大家供大家参考,具体如...
    99+
    2024-04-02
  • mysql如何将数据转为二进制
    今天小编给大家分享一下mysql如何将数据转为二进制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • golang中如何进行数据和json的相互转换
    这篇文章主要讲解了“golang中如何进行数据和json的相互转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang中如何进行数据和json的相互转换”吧!一、什么是 JSONJSO...
    99+
    2023-07-05
  • 如何用C语言实现将格式化数据和字符串相互转换
    这篇文章主要讲解了“如何用C语言实现将格式化数据和字符串相互转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用C语言实现将格式化数据和字符串相互转换”吧!sprintf和sscanf用...
    99+
    2023-07-05
  • PHP如何将二进制数据转换为十六进制表示
    这篇文章将为大家详细讲解有关PHP如何将二进制数据转换为十六进制表示,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 将二进制数据转换为十六进制表示 引言 在某些情况下,需要将二进制数据转换为十六进制...
    99+
    2024-04-02
  • php如何将数据转化为2进制
    这篇文章主要讲解了“php如何将数据转化为2进制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何将数据转化为2进制”吧!转化2进制的方法:1、使用decbin()函数,可把...
    99+
    2023-06-30
  • Redis中如何处理二进制序列化数据
    在Redis中处理二进制序列化数据通常使用二进制安全字符串来存储数据。Redis的字符串值是二进制安全的,可以存储任意类型的数据,包...
    99+
    2024-04-29
    Redis
  • Java如何实现二维数组与稀疏数组互转
    这篇文章主要介绍了Java如何实现二维数组与稀疏数组互转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现二维数组与稀疏数组互转文章都会有所收获,下面我们一起来看看吧。二维数组二维数组本质上是以数组...
    99+
    2023-06-29
  • php如何实现数值转十进制
    这篇文章主要介绍“php如何实现数值转十进制”,在日常操作中,相信很多人在php如何实现数值转十进制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何实现数值转十进制”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-25
  • MySQL5.6如何实现数据库之间的相互迁移
    下面讲讲关于MySQL5.6如何实现数据库之间的相互迁移,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL5.6如何实现数据库之间的相互迁移这篇文章你一定会有所受益。##...
    99+
    2024-04-02
  • 如何实现Django与数据库进行交互
    这篇文章主要介绍如何实现Django与数据库进行交互,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 如何创建项目数据库首先,在虚拟机数据库中建立一个与项目同名的数据库,方便管理。(django_test) ...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作