DataView.getInt8() đọc một số nguyên 8-bit có dấu (-128 đến 127) tại vị trí byte chỉ định. Đây là phương thức đọc kích thước nhỏ nhất trong DataView.
Cú pháp
dataView.getInt8(byteOffset)
byteOffset: Vị trí byte (0-based)- Trả về: Số nguyên 8-bit có dấu (-128 đến 127)
- Không có tham số endianness (1 byte không có thứ tự byte)
Ví dụ cơ bản
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setInt8(1, 362); // 362 = 0x16A -> chỉ giữ 8 bit thấp: 0x6A = 106
console.log(view.getInt8(1)); // 106
Xử lý giá trị float và tràn số
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setInt8(1, 362.23); // Phần thập phân bị bỏ -> 362 -> 106
console.log(view.getInt8(1)); // 106
view.setInt8(1, 200); // 200 > 127 -> tràn số bù 2: 200 - 256 = -56
console.log(view.getInt8(1)); // -56
Đọc vị trí chưa ghi
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setInt8(1); // Không truyền giá trị -> ghi 0
console.log(view.getInt8(1)); // 0
Biểu diễn bù 2 (Two's Complement)
| Giá trị ghi | Hex | Binary | Giá trị đọc (Int8) |
|---|---|---|---|
| 0 | 0x00 | 00000000 | 0 |
| 127 | 0x7F | 01111111 | 127 |
| 128 | 0x80 | 10000000 | -128 |
| 255 | 0xFF | 11111111 | -1 |
| 362 | 0x6A | 01101010 | 106 |
Ứng dụng
- Đọc byte đơn lẻ: magic number, version, flags
- Xử lý protocol 1 byte (nhiều protocol IoT, BLE)
- Đọc dữ liệu ký tự ASCII/UTF-8 từng byte
Lưu ý
- Giá trị đầu vào bị modulo 256 (giữ 8 bit thấp)
- Kết quả được hiểu theo bù 2 (signed)
- Vượt ranh buffer ném
RangeError