/** * Decode Int 64 * @param buffer {Buffer} * @param offset {Number} * @returns {{value: Number, length: Number}} */ function get64 (buffer, offset = 0) { return { value: Long.fromBytesLE(buffer.slice(offset)).toString(), length: 8 } }
function readLongStr(buf, offset) { const l1 = buf.readInt32LE(offset); const l2 = buf.readInt32LE(offset + 4); return new Long(l1, l2).toString(); }
it('should encode/decode uint 64', () => { const values = [Long.MAX_UNSIGNED_VALUE.toString(), '0', '10', '518'] values.forEach((value) => { const encoded = GdCom.putU64(value) const decoded = GdCom.getU64(encoded) expect(decoded.value).to.be.equal(value) }) })
function winTickToMs(num) { const l = Long.fromString(`${num}`); if (l.compare(0) === 0) return 0; return ( l .divide(10000) .subtract(windowsTickEpoch) .toString() * 1 ); }
/** * Decode Unsigned Int 64 * @param buffer {Buffer} * @param offset {Number} * @returns {{value: Number, length: Number}} */ function getU64 (buffer, offset = 0) { return { value: Long.fromBytesLE(buffer.slice(offset), true).toString(), length: 8 } }