mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-09 18:59:12 -06:00
27 lines
725 B
JavaScript
27 lines
725 B
JavaScript
// Copyright 2016 Attic Labs, Inc. All rights reserved.
|
|
// Licensed under the Apache License, version 2.0:
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
// @flow
|
|
|
|
import {frexp, ldexp} from './frexp.js';
|
|
|
|
export class BinaryEncoderDecoder {
|
|
|
|
// write n to buf, return number of bytes written
|
|
encode(buf: Buffer, n: number): number {
|
|
const [mantissa, exponent] = frexp(n);
|
|
// console.log(`${n} = ${mantissa} * 2^${exponent}`);
|
|
buf.writeDoubleBE(mantissa, 0);
|
|
buf.writeInt32BE(exponent, 8);
|
|
return 12;
|
|
}
|
|
|
|
// read from buf to return number
|
|
decode(buf: Buffer): number {
|
|
const mantissa = buf.readDoubleBE(0);
|
|
const exponent = buf.readInt32BE(8);
|
|
return ldexp(mantissa, exponent);
|
|
}
|
|
}
|