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

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

DataView.getInt32() đọc một số nguyên 32-bit có dấu (-2,147,483,648 đến 2,147,483,647) tại vị trí byte chỉ định, với hỗ trợ endianness.

Cú pháp

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

Ví dụ cơ bản

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

view.setInt32(1, 36274722);
console.log(view.getInt32(1)); // 36274722

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

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

view.setInt32(1, 554.36); // Cắt phần thập phân
console.log(view.getInt32(1)); // 554

view.setInt32(1, 3000000000); // > 2^31-1 -> tràn số
console.log(view.getInt32(1)); // -1294967296

Đọc vị trí chưa ghi

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

view.setInt32(1); // Ghi 0
console.log(view.getInt32(1)); // 0

Endianness thực tế

const buffer = new ArrayBuffer(8);
const view = new DataView(buffer);
const value = 0x12345678; // 305419896

view.setInt32(0, value, false); // Big-endian
view.setInt32(4, value, true);  // Little-endian

// Bộ nhớ: [0x12, 0x34, 0x56, 0x78, 0x78, 0x56, 0x34, 0x12]
console.log(view.getInt32(0, false)); // 305419896
console.log(view.getInt32(4, true));  // 305419896

Ứng dụng

  • Đọc header 32-bit: kích thước file, timestamp, checksum
  • Protocol mạng: IP header, sequence number
  • Định dạng file: PNG (IHDR), ZIP, ELF

Lưu ý

  • Phạm vi: -2,147,483,648 đến 2,147,483,647
  • Giá trị float bị cắt phần thập phân
  • Tràn số theo quy tắc bù 2
  • Cần ít nhất 4 byte từ byteOffset