DataView.getInt16() đọc một số nguyên 16-bit có dấu (-32,768 đến 32,767) tại vị trí byte chỉ định, hỗ trợ endianness.
Cú pháp
dataView.getInt16(byteOffset [, littleEndian])
byteOffset: Vị trí byte bắt đầulittleEndian: Tùy chọn,true= little-endian, mặc địnhfalse- Trả về: Số nguyên 16-bit có dấu
Ví dụ cơ bản
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setInt16(1, 3225);
console.log(view.getInt16(1)); // 3225
Xử lý float và tràn số
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setInt16(1, 564.22); // -> 564
console.log(view.getInt16(1)); // 564
view.setInt16(1, 40000); // > 32767 -> tràn
console.log(view.getInt16(1)); // -25536
Đọc vị trí chưa ghi
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setInt16(1); // Ghi 0
console.log(view.getInt16(1)); // 0
Biểu diễn bù 2 cho Int16
| Giá trị ghi | Hex | Giá trị đọc |
|---|---|---|
| 0 | 0x0000 | 0 |
| 32767 | 0x7FFF | 32767 |
| 32768 | 0x8000 | -32768 |
| 65535 | 0xFFFF | -1 |
| 40000 | 0x9C40 | -25536 |
Ứng dụng
- Đọc mẫu âm thanh 16-bit (WAV, PCM)
- Cảm biến nhiệt độ, áp suất (thường dùng int16)
- Protocol Modbus, CAN bus
- Định dạng file: BMP (header), TIFF
Lưu ý
- Phạm vi: -32,768 đến 32,767
- Cần 2 byte từ
byteOffset - Endianness quan trọng khi giao tiếp cross-platform