asn1-ts
Version:
ASN.1 encoding and decoding, including BER, CER, and DER.
14 lines (13 loc) • 452 B
JavaScript
const EXPONENT_BITMASK = 2146435072;
export default function dissectFloat(value) {
const float = new Float64Array([value]);
const uints = new Uint32Array(float.buffer);
const exponent = (((uints[1] & EXPONENT_BITMASK) >>> 20) - 1023 - 31);
const mantissa = 2147483648 + ((((uints[1] & 1048575) << 11)
| ((uints[0] & 4292870144) >>> 21)));
return {
negative: (value < 0),
exponent,
mantissa,
};
}