[6a3a178] | 1 | "use strict";
|
---|
| 2 |
|
---|
| 3 | Object.defineProperty(exports, "__esModule", {
|
---|
| 4 | value: true
|
---|
| 5 | });
|
---|
| 6 | exports.read = read;
|
---|
| 7 | exports.write = write;
|
---|
| 8 |
|
---|
| 9 | function read(buffer, offset, isLE, mLen, nBytes) {
|
---|
| 10 | var e, m;
|
---|
| 11 | var eLen = nBytes * 8 - mLen - 1;
|
---|
| 12 | var eMax = (1 << eLen) - 1;
|
---|
| 13 | var eBias = eMax >> 1;
|
---|
| 14 | var nBits = -7;
|
---|
| 15 | var i = isLE ? nBytes - 1 : 0;
|
---|
| 16 | var d = isLE ? -1 : 1;
|
---|
| 17 | var s = buffer[offset + i];
|
---|
| 18 | i += d;
|
---|
| 19 | e = s & (1 << -nBits) - 1;
|
---|
| 20 | s >>= -nBits;
|
---|
| 21 | nBits += eLen;
|
---|
| 22 |
|
---|
| 23 | for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
---|
| 24 |
|
---|
| 25 | m = e & (1 << -nBits) - 1;
|
---|
| 26 | e >>= -nBits;
|
---|
| 27 | nBits += mLen;
|
---|
| 28 |
|
---|
| 29 | for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
---|
| 30 |
|
---|
| 31 | if (e === 0) {
|
---|
| 32 | e = 1 - eBias;
|
---|
| 33 | } else if (e === eMax) {
|
---|
| 34 | return m ? NaN : (s ? -1 : 1) * Infinity;
|
---|
| 35 | } else {
|
---|
| 36 | m = m + Math.pow(2, mLen);
|
---|
| 37 | e = e - eBias;
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | function write(buffer, value, offset, isLE, mLen, nBytes) {
|
---|
| 44 | var e, m, c;
|
---|
| 45 | var eLen = nBytes * 8 - mLen - 1;
|
---|
| 46 | var eMax = (1 << eLen) - 1;
|
---|
| 47 | var eBias = eMax >> 1;
|
---|
| 48 | var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
|
---|
| 49 | var i = isLE ? 0 : nBytes - 1;
|
---|
| 50 | var d = isLE ? 1 : -1;
|
---|
| 51 | var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
|
---|
| 52 | value = Math.abs(value);
|
---|
| 53 |
|
---|
| 54 | if (isNaN(value) || value === Infinity) {
|
---|
| 55 | m = isNaN(value) ? 1 : 0;
|
---|
| 56 | e = eMax;
|
---|
| 57 | } else {
|
---|
| 58 | e = Math.floor(Math.log(value) / Math.LN2);
|
---|
| 59 |
|
---|
| 60 | if (value * (c = Math.pow(2, -e)) < 1) {
|
---|
| 61 | e--;
|
---|
| 62 | c *= 2;
|
---|
| 63 | }
|
---|
| 64 |
|
---|
| 65 | if (e + eBias >= 1) {
|
---|
| 66 | value += rt / c;
|
---|
| 67 | } else {
|
---|
| 68 | value += rt * Math.pow(2, 1 - eBias);
|
---|
| 69 | }
|
---|
| 70 |
|
---|
| 71 | if (value * c >= 2) {
|
---|
| 72 | e++;
|
---|
| 73 | c /= 2;
|
---|
| 74 | }
|
---|
| 75 |
|
---|
| 76 | if (e + eBias >= eMax) {
|
---|
| 77 | m = 0;
|
---|
| 78 | e = eMax;
|
---|
| 79 | } else if (e + eBias >= 1) {
|
---|
| 80 | m = (value * c - 1) * Math.pow(2, mLen);
|
---|
| 81 | e = e + eBias;
|
---|
| 82 | } else {
|
---|
| 83 | m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
---|
| 84 | e = 0;
|
---|
| 85 | }
|
---|
| 86 | }
|
---|
| 87 |
|
---|
| 88 | for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
|
---|
| 89 |
|
---|
| 90 | e = e << mLen | m;
|
---|
| 91 | eLen += mLen;
|
---|
| 92 |
|
---|
| 93 | for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
|
---|
| 94 |
|
---|
| 95 | buffer[offset + i - d] |= s * 128;
|
---|
| 96 | }
|
---|