Buffer、ArrayBuffer及DataView之間的轉換


Buffer

  是Nodejs提供的可以直接操作二進制數據的類

ArrayBuffer

  是符合ES標准的

  用來表示通用的、固定長度的原始二進制數據緩沖區,是一個字節數組,可讀但不可直接寫

注:

  ArrayBuffer對象並沒有提供任何讀寫內存的方法,但允許在其上方建立DataView,從而插入與讀取內存中的數據

DataView 

  是一個可以從 ArrayBuffer 對象中讀寫多種數值類型的底層接口

  類型有

復制代碼
Int8Array:8位有符號整數,長度1個字節
Uint8Array:8位無符號整數,長度1個字節
Int16Array:16位有符號整數,長度2個字節
Uint16Array:16位無符號整數,長度2個字節
Int32Array:32位有符號整數,長度4個字節
Uint32Array:32位無符號整數,長度4個字節
Float32Array:32位浮點數,長度4個字節
Float64Array:64位浮點數,長度8個字節

1.buffer 轉 Uint8Array

var buffer = Buffer.from('hello,world');
var arraybuffer = new Uint8Array(buffer); console.log(arraybuffer);

Uint8Array(11) [
104, 101, 108, 108,
111, 44, 119, 111,
114, 108, 100
]

2.Uint8Array 轉 ArrayBuffer

var buffer = Buffer.from('hello,world');
var array = new Uint8Array(buffer); var arraybuffer = array.buffer; console.log(arraybuffer);

ArrayBuffer {
[Uint8Contents]: <68 65 6c 6c 6f 2c 77 6f 72 6c 64>,
byteLength: 11
}

3. ArrayBuffer轉 Buffer

var buffer = Buffer.from('hello,world');
var array = new Uint8Array(buffer); var arraybuffer = array.buffer; var buffer1 = Buffer.from(arraybuffer); console.log(buffer1);

<Buffer 68 65 6c 6c 6f 2c 77 6f 72 6c 64>

4.ArrayBuffer轉 DataView 

var buffer = Buffer.from('hello,world');
var array = new Uint8Array(buffer);
var arraybuffer = array.buffer;
var view = new DataView(arraybuffer);
console.log(view);

5.DataView轉ArrrayBuffer

var buffer = Buffer.from('hello,world');
var array = new Uint8Array(buffer);
var arraybuffer = array.buffer;
var view = new DataView(arraybuffer);
var buffer1 = view.buffer;
console.log(buffer1);

ArrayBuffer {
[Uint8Contents]: <68 65 6c 6c 6f 2c 77 6f 72 6c 64>,
byteLength: 11
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM