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

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

DataView cung cấp giao diện đọc/ghi dữ liệu nhị phân ở mức byte, độc lập với endianness (thứ tự byte). Phương thức getUint16() đọc một số nguyên 16-bit không dấu (0 đến 65535) tại vị trí byte chỉ định.

Cú pháp

dataView.getUint16(byteOffset [, littleEndian])
  • byteOffset: Vị trí byte bắt đầu đọc (bắt buộc)
  • littleEndian: Tùy chọn, true = little-endian, false/mặc định = big-endian
  • Trả về: Số nguyên 16-bit không dấu (0 - 65535)

Ví dụ cơ bản

const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);

view.setUint16(1, 45544); // Ghi tại byte offset 1
console.log(view.getUint16(1)); // 45544

Xử lý giá trị float

const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);

view.setUint16(1, 455.44); // Float bị cắt phần thập phân
console.log(view.getUint16(1)); // 455

Đọc vị trí chưa ghi

const buffer = new ArrayBuffer(20);
const view = new DataView(buffer);

view.setUint16(1); // Không truyền giá trị -> ghi 0
console.log(view.getUint16(1)); // 0

Endianness (Thứ tự byte)

const buffer = new ArrayBuffer(4);
const view = new DataView(buffer);

view.setUint16(0, 0x1234, false); // Big-endian: 0x12, 0x34
view.setUint16(2, 0x1234, true);  // Little-endian: 0x34, 0x12

console.log(view.getUint16(0, false)); // 4660 (0x1234)
console.log(view.getUint16(2, true));  // 4660 (0x1234)

Ứng dụng

  • Đọc header file nhị phân (PNG, BMP, WAV, v.v.)
  • Parse protocol mạng (TCP, UDP header)
  • Xử lý dữ liệu cảm biến, embedded systems

Lưu ý

  • Không kiểm tra giới hạn tự động - truy cập vượt ranh gây RangeError
  • Giá trị float bị cắt phần thập phân (truncated toward zero)
  • Vị trí chưa ghi trả về 0 (khác với Float trả về NaN)