ArrayBuffer Uint8Array Blob與文本字符相互轉(zhuǎn)換示例
API介紹
前端 File 上傳、下載,Canvas 保存圖片,Ajax 和 Fetch 二進制流傳輸,PDF 預(yù)覽,瀏覽器上 WebAssembly 的應(yīng)用 等等都需要用到 ArrayBuffer 和 Blob 。文件就具體介紹一下這些對象的相互轉(zhuǎn)換。
FileReader
對象允許Web應(yīng)用程序異步讀取存儲在用戶計算機上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,使用 File
或 Blob
對象指定要讀取的文件或數(shù)據(jù)。
Blob
對象表示一個不可變、原始數(shù)據(jù)的類文件對象。它的數(shù)據(jù)可以按文本或二進制的格式進行讀取,也可以轉(zhuǎn)換成 ReadableStream
來用于數(shù)據(jù)操作。Blob
表示的不一定是 JavaScript
原生格式的數(shù)據(jù)。File
接口基于 Blob
,繼承了 blob
的功能并將其擴展使其支持用戶系統(tǒng)上的文件。
ArrayBuffer
對象代表儲存二進制數(shù)據(jù)的一段內(nèi)存,它不能直接讀寫,只能通過視圖(TypedArray
視圖和 DataView
視圖)來讀寫,視圖的作用是以指定格式解讀二進制數(shù)據(jù)。
Uint8Array
對象是 ArrayBuffer
的一個數(shù)據(jù)類型(8 位不帶符號整數(shù))。
TextEncoder
接受代碼點流作為輸入,并提供 UTF-8
字節(jié)流作為輸出。
TextDecoder
接口表示一個文本解碼器,一個解碼器只支持一種特定文本編碼,例如 utf-8、iso-8859-2、koi8、cp1261,gbk 等等。解碼器將字節(jié)流作為輸入,并提供代碼點流作為輸出。
注意: 二進制數(shù)組并不是真正的數(shù)組,而是類似數(shù)組的對象。
字符與ArrayBuffer,Uint8Array相互轉(zhuǎn)換
TextEncoder
=> ArrayBuffer
let encoder = new TextEncoder(); // 字符 轉(zhuǎn) Uint8Array let uint8Array = encoder.encode("你好啊"); // Uint8Array 轉(zhuǎn) ArrayBuffer let arrayBuffer = uint8Array.buffer
Blob
=> ArrayBuffer
let str = 'hello,你好嗎?' let blob = new Blob([str],{type:'text/plain;charset=utf-8'}); let utf8decoder = new TextDecoder() blob.arrayBuffer().then(buffer=>{ // ArrayBuffer console.log(buffer) let text = utf8decoder.decode(buffer) // String console.log(text) })
FileReader
=> ArrayBuffer
let str = 'hello,你好嗎?' let blob = new Blob([str],{type:'text/plain;charset=utf-8'}); let utf8decoder = new TextDecoder() let fr = new FileReader() fr.readAsArrayBuffer(blob) fr.onload = function(res) { // ArrayBuffer let buffer = fr.result console.log(buffer) let text = utf8decoder.decode(buffer) // String console.log(text) }
以上就是ArrayBuffer Uint8Array Blob與文本字符相互轉(zhuǎn)換示例的詳細內(nèi)容,更多關(guān)于ArrayBuffer Uint8Array Blob轉(zhuǎn)換文本字符的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序wx.navigateTo方法里的events參數(shù)使用詳情及場景
這篇文章主要介紹了微信小程序wx.navigateTo方法里的events參數(shù)使用詳情及場景,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01JS創(chuàng)建或填充任意長度數(shù)組的小技巧匯總
在JavaScript 中,我們往往會遇到需要使用某些默認值來填充數(shù)組的情況,那么都有哪些方式可以完成這樣的任務(wù)呢?這篇文章主要給大家介紹了關(guān)于JS創(chuàng)建或填充任意長度數(shù)組的小技巧,需要的朋友可以參考下2021-10-10JavaScript使用pop方法移除數(shù)組最后一個元素用法實例
這篇文章主要介紹了JavaScript使用pop方法移除數(shù)組最后一個元素,實例分析了javascript中pop方法的使用技巧,需要的朋友可以參考下2015-04-04解決js相同的正則多次調(diào)用test()返回的值卻不同的問題
今天小編就為大家分享一篇解決js相同的正則多次調(diào)用test()返回的值卻不同的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10詳解解決小程序中webview頁面多層history返回問題
這篇文章主要介紹了詳解解決小程序中webview頁面多層history返回問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08