DataView.setUint16() ghi một số nguyên 16-bit không dấu (0 đến 65,535) vào buffer tại vị trí byte chỉ định, hỗ trợ endianness.
Cú pháp
dataView.setUint16(byteOffset, value [, littleEndian])
byteOffset: Vị trí byte bắt đầu ghivalue: Giá trị (0 - 65535)littleEndian: Tùy chọn,true= little-endian, mặc địnhfalse- Trả về:
undefined
Ví dụ cơ bản
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint16(1, 45544);
console.log(view.getUint16(1)); // 45544
Xử lý float và tràn số
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint16(1, 455.44); // -> 455
console.log(view.getUint16(1)); // 455
view.setUint16(1, 70000); // > 65535 -> tràn: 70000 - 65536 = 4464
console.log(view.getUint16(1)); // 4464
view.setUint16(1, -1); // -> 65535 (bù 2)
console.log(view.getUint16(1)); // 65535
Đọc vị trí chưa ghi
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint16(1); // Ghi 0
console.log(view.getUint16(1)); // 0
Endianness
const buffer = new ArrayBuffer(4);
const view = new DataView(buffer);
const value = 0x1234; // 4660
view.setUint16(0, value, false); // Big-endian: 0x12, 0x34
view.setUint16(2, value, true); // Little-endian: 0x34, 0x12
console.log(new Uint8Array(buffer)); // [18, 52, 52, 18]
Ứng dụng
- Port number trong network protocol (TCP/UDP header)
- Kích thước chunk, length field (PNG, ZIP, BMP)
- Unicode code point (BMP - Basic Multilingual Plane)
- Cảm biến 16-bit, mẫu âm thanh 16-bit unsigned
Lưu ý
- Cần 2 byte từ
byteOffset - Phạm vi: 0 - 65,535
- Float -> truncate, âm -> bù 2