Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Phương thức DataView.getUint8() trong JavaScript

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