UNPKG

@hqtsm/dataview

Version:
72 lines 1.94 kB
"use strict"; /** * @module * * 24-bit integer operations. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.getInt24 = getInt24; exports.getUint24 = getUint24; exports.setInt24 = setInt24; exports.setUint24 = setUint24; /** * Get 24-bit signed integer. * * @param dataView Data view. * @param byteOffset Byte offset. * @param littleEndian Little endian. * @returns Integer value. */ function getInt24(dataView, byteOffset, littleEndian = false) { return getUint24(dataView, byteOffset, littleEndian) << 8 >> 8; } /** * Get 24-bit unsigned integer. * * @param dataView Data view. * @param byteOffset Byte offset. * @param littleEndian Little endian. * @returns Integer value. */ function getUint24(dataView, byteOffset, littleEndian = false) { const b = dataView.getUint8((byteOffset |= 0) + 2); const a = dataView.getUint16(byteOffset, littleEndian); return littleEndian ? a | b << 16 : a << 8 | b; } /** * Set 24-bit signed integer. * * @param dataView Data view. * @param byteOffset Byte offset. * @param value Integer value. * @param littleEndian Little endian. */ function setInt24(dataView, byteOffset, value, littleEndian = false) { setUint24(dataView, byteOffset, value, littleEndian); } /** * Set 24-bit unsigned integer. * * @param dataView Data view. * @param byteOffset Byte offset. * @param value Integer value. * @param littleEndian Little endian. */ function setUint24(dataView, byteOffset, value, littleEndian = false) { let a, b = value & 65280; if (littleEndian) { b |= value >> 16 & 255; a = value & 255; } else { b |= value & 255; a = value >> 16 & 255; } if ((byteOffset |= 0) < 0) { // Trigger native OOB exception. dataView.setUint8(byteOffset, a); } dataView.setUint16(byteOffset + 1, b); dataView.setUint8(byteOffset, a); } //# sourceMappingURL=24.js.map