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

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

DataView.setInt16() ghi một số nguyên 16-bit có dấu (-32,768 đến 32,767) vào buffer tại vị trí byte chỉ định, hỗ trợ endianness.

Cú pháp

dataView.setInt16(byteOffset, value [, littleEndian])
  • byteOffset: Vị trí byte bắt đầu ghi
  • value: Giá trị int16
  • littleEndian: Tùy chọn, true = little-endian, mặc định false
  • Trả về: undefined

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

view.setInt16(1, -40000); // < -32768 -> 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

Bảng giá trị Int16 (Bù 2)

InputHexGiá trị lưu
00x00000
327670x7FFF32767
327680x8000-32768
655350xFFFF-1
-10xFFFF-1
-327680x8000-32768

Ứng dụng

  • Mẫu âm thanh PCM 16-bit signed (WAV, AIFF)
  • Cảm biến nhiệt độ/độ ẩm có dấu
  • Delta encoding, differential values
  • Protocol Modbus (holding register signed)

Lưu ý

  • Phạm vi: -32,768 đến 32,767
  • Cần 2 byte từ byteOffset
  • Float -> truncate, tràn theo bù 2