DataView cung cấp giao diện đọc/ghi dữ liệu nhị phân ở mức byte, độc lập với endianness (thứ tự byte). Phương thức getUint16() đọc một số nguyên 16-bit không dấu (0 đến 65535) tại vị trí byte chỉ định.
Cú pháp
dataView.getUint16(byteOffset [, littleEndian])
byteOffset: Vị trí byte bắt đầu đọc (bắt buộc)littleEndian: Tùy chọn,true= little-endian,false/mặc định = big-endian- Trả về: Số nguyên 16-bit không dấu (0 - 65535)
Ví dụ cơ bản
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint16(1, 45544); // Ghi tại byte offset 1
console.log(view.getUint16(1)); // 45544
Xử lý giá trị float
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint16(1, 455.44); // Float bị cắt phần thập phân
console.log(view.getUint16(1)); // 455
Đọc vị trí chưa ghi
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint16(1); // Không truyền giá trị -> ghi 0
console.log(view.getUint16(1)); // 0
Endianness (Thứ tự byte)
const buffer = new ArrayBuffer(4);
const view = new DataView(buffer);
view.setUint16(0, 0x1234, false); // Big-endian: 0x12, 0x34
view.setUint16(2, 0x1234, true); // Little-endian: 0x34, 0x12
console.log(view.getUint16(0, false)); // 4660 (0x1234)
console.log(view.getUint16(2, true)); // 4660 (0x1234)
Ứng dụng
- Đọc header file nhị phân (PNG, BMP, WAV, v.v.)
- Parse protocol mạng (TCP, UDP header)
- Xử lý dữ liệu cảm biến, embedded systems
Lưu ý
- Không kiểm tra giới hạn tự động - truy cập vượt ranh gây
RangeError - Giá trị float bị cắt phần thập phân (truncated toward zero)
- Vị trí chưa ghi trả về 0 (khác với Float trả về NaN)