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

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

DataView.setInt8() ghi một số nguyên 8-bit có dấu (-128 đến 127) vào buffer tại vị trí byte chỉ định. Đây là phương thức ghi kích thước nhỏ nhất.

Cú pháp

dataView.setInt8(byteOffset, value)
  • byteOffset: Vị trí byte (0-based)
  • value: Giá trị cần ghi (-128 đến 127)
  • Không có tham số endianness (1 byte)
  • Trả về: undefined

Ví dụ cơ bản

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

view.setInt8(1, 362); // 362 = 0x16A -> giữ 8 bit thấp: 0x6A = 106
console.log(view.getInt8(1)); // 106

Xử lý float và tràn số

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

view.setInt8(1, 362.23); // -> 362 -> 106
console.log(view.getInt8(1)); // 106

view.setInt8(1, 200); // > 127 -> tràn: 200 - 256 = -56
console.log(view.getInt8(1)); // -56

view.setInt8(1, -200); // < -128 -> tràn: -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); // Ghi 0
console.log(view.getInt8(1)); // 0

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

InputHex (8 bit)Giá trị lưu (Int8)
00x000
1270x7F127
1280x80-128
2550xFF-1
-10xFF-1
-1280x80-128
-1290x7F127

Ứng dụng

  • Ghi byte đơn: version, flags, type byte, magic number
  • ASCII/UTF-8 character encoding
  • Bitmask, bitfield (kết hợp với bitwise operations)
  • Protocol 1 byte: MQTT, CoAP, BLE

Lưu ý

  • Giá trị input modulo 256 (giữ 8 bit thấp)
  • Kết quả hiểu theo signed (bù 2)
  • Vượt ranh buffer -> RangeError