Khi nào nên sử dụng ArrayBuffer trong JavaScript?

Tạo một ArrayBuffer mới với một bản sao của các byte this giữa beginByte (bao gồm) và endByte (độc quyền). Nếu endByte không được chỉ định, thì sử dụng this.byteLength. Các thay đổi đối với this không ảnh hưởng đến bản sao được trả lại bởi slice

hàm() { hàm r(t, r) { trả về (t = 0. t. 0) < 0? . cực đại(t + r, 0). Toán học. tối thiểu (t, r) } ArrayBuffer. nguyên mẫu. slice = function(e, n) { var f, o, i, h, u = this. byteLength, s = r(e, u), a = u; . == t && (a = r(n, u)), s > a ? . (f = a - s, o = new ArrayBuffer(f), i = new Uint8Array(o), h = new Uint8Array(this, s, f), i. đặt (h), o) } } ()

Đối tượng ArrayBuffer trong JavaScript được sử dụng để biểu thị bộ đệm dữ liệu nhị phân thô có độ dài cố định chung chung. Để thao tác với nội dung của đối tượng ArrayBuffer, chúng ta phải tạo đối tượng DataView vì chúng ta không thể thao tác trực tiếp với nội dung. Chúng ta có thể đọc và ghi cả hai bằng cách sử dụng đối tượng DataView

cú pháp

new ArrayBuffer(byteSize)

Tham số byteSize chỉ định kích thước bộ đệm mảng theo byte sẽ được tạo

Sau đây là mã cho ArrayBuffer() Object −

Thí dụ

Bản thử trực tiếp





Document



JavaScript ArrayBuffer object

CLICK HERE

Click on the above button to see the array buffer object contents in binary

đầu ra

Khi nào nên sử dụng ArrayBuffer trong JavaScript?

Khi nhấp vào nút “BẤM VÀO ĐÂY” –

Khi nào nên sử dụng ArrayBuffer trong JavaScript?

Khi nào nên sử dụng ArrayBuffer trong JavaScript?


Khi nào nên sử dụng ArrayBuffer trong JavaScript?

ArrayBuffer có thể được sử dụng để lấy dữ liệu của hình ảnh jpg (byte RGB) và tạo png từ đó bằng cách thêm một byte alpha

Bộ đệm mảng Javascript

Đối tượng ArrayBuffer trong JavaScript đại diện cho bộ đệm dữ liệu nhị phân thô có độ dài cố định chung chung. Bạn không thể thao tác trực tiếp nội dung của ArrayBuffer. ArrayBuffer được sử dụng để giữ dữ liệu nhị phân. Nó có thể là dữ liệu nhị phân của một hình ảnh

cú pháp

Cú pháp của ArrayBuffer như sau

new ArrayBuffer(length)

Thông số

Tham số độ dài là độ dài của ArrayBuffer tính bằng byte. Kích thước chiều dài tính bằng byte

Thí dụ

// app.js

let app = new ArrayBuffer(6)
console.log(app)

Xem đầu ra

Khi nào nên sử dụng ArrayBuffer trong JavaScript?

Chúng tôi tạo bộ đệm 8 byte với chế độ xem Int32Array đề cập đến bộ đệm. Xem ví dụ sau

Trong phát triển web, dữ liệu nhị phân thường được sử dụng khi làm việc với các tệp (ví dụ: tạo, tải lên, tải xuống). JavaScript cho phép làm tất cả

Nhiều lớp tồn tại, trong số đó là

  • Bộ đệm mảng
  • Bộ đệm mảng, Uint8Array, Chế độ xem dữ liệu
  • Uint8Array
  • Blob, v.v.

Trong JavaScript, dữ liệu nhị phân được thực hiện theo cách không chuẩn. Tuy nhiên, nó trở nên đơn giản sau khi đi vào một số chi tiết

ArrayBuffer được gọi là đối tượng nhị phân cơ bản. Nó là một tham chiếu đến vùng bộ nhớ liền kề có độ dài cố định

ArrayBuffer có thể được tạo theo cách sau

Khi nào nên sử dụng ArrayBuffer trong JavaScript?
Javascript ArrayBuffer là dữ liệu nhị phân thô

hãy để bộ đệm = ArrayBuffer mới (16); . nhật ký (bộ đệm. byteLength);

Vùng bộ nhớ liền kề 16 byte và được điền sẵn các số 0 bằng cách này. Hãy cẩn thận để không nhầm lẫn ArrayBuffer với Array. họ không có điểm chung

Điều cụ thể nhất về ArrayBuffer là

  • Chiều dài cố định, không tăng giảm được
  • Chính xác là nó chiếm nhiều bộ nhớ trong bộ nhớ
  • Để truy cập các byte riêng lẻ, cần có một đối tượng “xem” khác, không phải bộ đệm

Để thao tác với ArrayBuffer, cần có một đối tượng “view”

Về bản thân, một đối tượng xem không chứa gì. Nó giải thích các byte, được lưu trữ trong ArrayBuffer

Ví dụ,

  • Uint8Array coi mỗi byte bên trong ArrayBuffer là một số cụ thể với các giá trị có thể từ 0 đến 255 ( một byte bằng 8 bit). Một giá trị như thế này được gọi là “số nguyên không dấu 8 bit”
  • Uint16Array coi hai byte bất kỳ giống như một số nguyên, với các giá trị có thể từ 0 đến 65535 (“số nguyên không dấu 16 bit”)
  • Uint32Array coi bốn byte bất kỳ giống như một số nguyên với các giá trị có thể từ 0 đến 4294967295 (“số nguyên không dấu 32 bit”)
  • Float64Array xử lý tám byte bất kỳ như một số dấu phẩy động với các giá trị có thể từ 5. 0x10-324 đến 1. 8x10308

ArrayBuffer là dữ liệu nhị phân thô. Nó là đối tượng cơ bản, là gốc rễ của mọi thứ

Để viết nó hoặc lặp lại nó và cho bất kỳ thao tác nào khác, nên sử dụng chế độ xem như thế này

Khi nào nên sử dụng ArrayBuffer trong JavaScript?
Javascript ArrayBuffer là dữ liệu nhị phân thô

hãy để bộ đệm = ArrayBuffer mới (16); . nhật ký (Uint32Array. BYTES_PER_ELEMENT); . nhật ký (xem. chiều dài); . nhật ký (xem. byteLength); . nhật ký (số);

TypedArray là thuật ngữ chung cho tất cả các chế độ xem (Uint8Array, Uint32Array, v.v.). Các phương thức và thuộc tính giống nhau được sử dụng bởi chúng

Không có hàm tạo TypedArray. Nó chỉ là một thuật ngữ "dù" để đại diện cho một trong các chế độ xem trên ArrayBuffer. Ví dụ: new TypedArray mới có nghĩa là một trong những Int8Array mới, Uint8Array mới, v.v.

Mảng đã nhập tương tự như mảng thông thường. chúng bao gồm iterable và indexes

Năm loại đối số tồn tại

new TypedArray(buffer, [byteOffset], [length]);
new TypedArray(object);
new TypedArray(typedArray);
new TypedArray(length);
new TypedArray();

Một TypedArray có thể được tạo trực tiếp mà không cần tham khảo ArrayBuffer. Nhưng không có chế độ xem nào có thể tồn tại nếu không có ArrayBuffer bên dưới. Vì vậy, nó được tạo tự động trong mọi trường hợp, trừ khi nó được cung cấp

Các thuộc tính để truy cập ArrayBuffer như sau

  • mảng. đệm. nó tham chiếu ArrayBuffer
  • mảng. độ dài byte. đó là độ dài của ArrayBuffer

Vì vậy, nó có thể được chuyển từ chế độ xem này sang chế độ xem khác như thế này

let arr8 = new Uint8Array([0, 1, 2, 3]);
// another view at the same data
let arr16 = new Uint16Array(arr8.buffer);

Danh sách các mảng đã nhập được hiển thị bên dưới

  • Uint8Array, Uint16Array, Uint32Array. chúng được sử dụng cho các số nguyên 8,16 và 32 bit
  • Uint8ClampedArray. nó được sử dụng cho số nguyên 8 bit
  • Int8Array, Int16Array, Int32Array được sử dụng cho các số nguyên có dấu và có thể là số âm
  • Float32Array, Float64Array được áp dụng cho các số dấu phẩy động có dấu 32 và 64 bit

Ngoài ra, hãy tính đến việc không tồn tại loại giá trị đơn (int hoặc int8) trong JavaScript

Nếu bạn cố ghi một giá trị vượt quá giới hạn vào một mảng đã nhập, sẽ không có lỗi xảy ra, nhưng các byte sẽ bị cắt

Ví dụ: hãy thử lưu trữ 256 vào Uint8Array. Ở dạng nhị phân, 256 là 9 bit (100000000). Tuy nhiên, như đã nói ở trên, Uint8Array có thể chứa 8 bit cho mỗi giá trị

Bản demo sẽ trông như thế này

Khi nào nên sử dụng ArrayBuffer trong JavaScript?
Javascript một giá trị ngoài giới hạn vào một mảng đã nhập

hãy để uint8array = new Uint8Array(16); . nhật ký (số. toString(2)); . nhật ký (uint8array [0]); . nhật ký (uint8array [1]);

Về điểm này, Uint8ClampedArray là duy nhất. nó cư xử khác đi. Nó có thể lưu 255 cho mỗi số lớn hơn 255 và 0 cho các số âm

Các phương thức mảng thông thường được sử dụng bởi ArrayBuffer. Nhưng, có những ngoại lệ đáng chú ý

Ví dụ: , , , và các phương thức khác có thể được lặp lại. Nhưng, có những điều không thể làm được. Ví dụ, không có phương pháp và không có mối nối

Thay vào đó, có các phương pháp bổ sung như

  • mảng. đặt (từArr, [bù]). nó sao chép tất cả các phần tử từ fromArr sang mảng, bắt đầu từ vị trí offset
  • mảng. mảng con([bắt đầu, kết thúc]). nó tạo ra một chế độ xem cùng loại mới từ đầu đến cuối

Phương pháp này giống như phương pháp lát nhưng nó không sao chép bất cứ thứ gì. Nói một cách dễ hiểu, bạn không thể tạo chế độ xem mới, hoạt động trên một phần dữ liệu cụ thể

Có một chế độ xem linh hoạt chưa nhập trên ArrayBuffer, được gọi là DataView. Với nó, bạn có thể truy cập dữ liệu trên bất kỳ phần bù nào ở bất kỳ định dạng nào. Hàm tạo cho biết định dạng của các mảng đã nhập là gì. Toàn bộ mảng phải đồng nhất và arr[i] là số thứ i. Dữ liệu có thể được truy cập bằng cách sử dụng. getUint8(i) hoặc. phương thức getUint16(i) với DataView

Cú pháp của DataView như sau

new DataView(buffer, [byteOffset], [byteLength]);

Hãy thử trích xuất các số ở các định dạng khác nhau từ cùng một bộ đệm, như thế này

Khi nào nên sử dụng ArrayBuffer trong JavaScript?
Javascript cú pháp của DataView

// mảng nhị phân 4 byte, tất cả đều có giá trị lớn nhất là 255 let bufferArr = new Uint8Array([255, 255, 255, 255]). đệm; . log(dataView. getUint8(0)); . log(dataView. getUint16(0)); . log(dataView. getUint32(0)); . setUint32(0, 0);

Vì vậy, DataView rất phù hợp để lưu trữ dữ liệu có định dạng hỗn hợp trong cùng một bộ đệm

ArrayBuffer là đối tượng nhị phân cơ bản. Nó được coi là một tham chiếu đến vùng bộ nhớ liền kề có độ dài cố định. Một khung nhìn là cần thiết cho hầu hết các thao tác trên ArrayBuffer

Nó có thể là TypedArray hoặc DataView

Trong phần lớn các trường hợp, bạn có thể tạo và thao tác trực tiếp trên các mảng đã nhập, để lại ArrayBuffer dưới vỏ bọc. Nó có thể được truy cập như một. đệm , tạo một chế độ xem khác, nếu cần

Sự khác biệt giữa ArrayBuffer và Blob là gì?

Một ArrayBuffer có thể được thao tác bằng cách sử dụng TypedArrays và DataView, trong khi Blob là bất biến . Một ArrayBuffer nằm trong bộ nhớ, có sẵn để thao tác. Blob có thể nằm trên đĩa, trong bộ nhớ cache và những nơi khác không có sẵn. Blob có thể được chuyển trực tiếp vào các chức năng khác như cửa sổ.

Uint8Array có giống với ArrayBuffer không?

Uint8Array – xử lý mỗi byte trong ArrayBuffer là một số riêng biệt , với các giá trị có thể từ 0 đến 255 (một byte là 8 bit, . Giá trị như vậy được gọi là “số nguyên không dấu 8 bit”. Uint16Array – coi mỗi 2 byte là một số nguyên, với các giá trị có thể từ 0 đến 65535.

Kiểu ArrayBuffer là gì?

ArrayBuffer là kiểu dữ liệu được sử dụng để biểu thị bộ đệm dữ liệu nhị phân chung, có độ dài cố định .

Khi nào sử dụng JavaScript mảng đã nhập?

Mảng thông thường có thể nhanh như mảng đã nhập nếu bạn thực hiện nhiều truy cập tuần tự. Truy cập ngẫu nhiên bên ngoài giới hạn của mảng làm cho mảng phát triển. Các mảng đã nhập truy cập nhanh nhưng được phân bổ chậm . Nếu bạn thường xuyên tạo các mảng tạm thời, hãy tránh các mảng đã nhập.