DataView.getUint8() đọc một số nguyên 8-bit không dấu (0 đến 255) tại vị trí byte chỉ định. Đây là phương thức đọc byte đơn giản nhất.
Cú pháp
dataView.getUint8(byteOffset)
byteOffset: Vị trí byte (0-based)- Trả về: Số nguyên 0-255
- Không có endianness (1 byte)
Ví dụ cơ bản
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint8(1, 657); // 657 = 0x291 -> giữ 8 bit thấp: 0x91 = 145
console.log(view.getUint8(1)); // 145
Xử lý float
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint8(1, 657.82); // -> 657 -> 145
console.log(view.getUint8(1)); // 145
Đọc vị trí chưa ghi
const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);
view.setUint8(1); // Ghi 0
console.log(view.getUint8(1)); // 0
Ứng dụng
- Đọc byte thô: magic number, version, opcode, flags
- Parse binary protocol: HTTP/2 frame, DNS, DHCP
- Xử lý hình ảnh: pixel data (grayscale, palette index)
- UTF-8 decoding: đọc từng byte để decode
- Checksum, CRC8
Ví dụ: Đọc header PNG
// PNG signature: 89 50 4E 47 0D 0A 1A 0A
const pngHeader = new Uint8Array([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]);
const buffer = pngHeader.buffer;
const view = new DataView(buffer);
for (let i = 0; i < 8; i++) {
console.log(`Byte ${i}: 0x${view.getUint8(i).toString(16).padStart(2, '0')}`);
}
// Byte 0: 0x89, Byte 1: 0x50, Byte 2: 0x4e, Byte 3: 0x47...
Lưu ý
- Giá trị input modulo 256 khi ghi (
setUint8) - Luôn trả về 0-255 (unsigned)
- Vượt ranh buffer ->
RangeError - Hiệu năng cao - truy cập byte trực tiếp