readUInt64() { const first = this.readInt32(); const second = this.readInt32(); const long = new Long(first, second, true); if (long.isNegative()) { if (long.lessThan(-9007199254740991)) return long; } else if (long.greaterThan(9007199254740991)) return long; return long.toNumber(); }
/** * Encode Int 64 * @param value * @returns {Buffer} */ function put64 (value) { return Buffer.from(Long.fromString(value.toString()).toBytesLE()) }
signers.forEach(item => { let signerMsg = signer.create({ address: item.address, weight: long.fromValue(item.weight), }); signersList.push(signerMsg); });
/** * 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(); }
// things: array of inputs or outputs. function sumAmount(things) { var sum = new Long(0); things.forEach((th) => { sum = sum.add(th.amount); }); return sum; }
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 createLongStr(str) { const buf = Buffer.alloc(8); const l = Long.fromString(`${str}`); buf.writeInt32LE(l.getLowBits(), 0); buf.writeInt32LE(l.getHighBits(), 4); return buf; }
function winTickToMs(num) { const l = Long.fromString(`${num}`); if (l.compare(0) === 0) return 0; return ( l .divide(10000) .subtract(windowsTickEpoch) .toString() * 1 ); }
/** * Encode Unsigned Int 64 * @param value * @returns {Buffer} */ function putU64 (value) { return Buffer.from(Long.fromNumber(value, true).toBytesLE()) }
/** * 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 } }
readInt64() { const first = this.readInt32(); const second = this.readInt32(); const long = new Long(first, second, false); if (long.isNegative()) { if (long.lessThan(-9007199254740991)) return long; } else if (long.greaterThan(9007199254740991)) return long; return long.toNumber(); }