Tạo một ArrayBuffer mới với một bản sao của các byte Show Đố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ápnew 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 đầu raKhi nhấp vào nút “BẤM VÀO ĐÂY” – 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ápCú 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 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à
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 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à
Để 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ụ,
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 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
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
Vì vậy, nó có thể được chuyển từ chế độ xem này sang chế độ xem khác như thế này
Danh sách các mảng đã nhập được hiển thị bên dưới
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 Javascript một giá trị ngoài giới hạn vào một mảng đã nhậphã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ư
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
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 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. |