source: imaps-frontend/node_modules/es-abstract/helpers/bytesAsInteger.js@ 79a0317

main
Last change on this file since 79a0317 was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 3 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 1000 bytes
RevLine 
[d565449]1'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
[79a0317]5var $pow = require('math-intrinsics/pow');
6
[d565449]7var $Number = GetIntrinsic('%Number%');
8var $BigInt = GetIntrinsic('%BigInt%', true);
9
10module.exports = function bytesAsInteger(rawBytes, elementSize, isUnsigned, isBigInt) {
11 var Z = isBigInt ? $BigInt : $Number;
12
13 // this is common to both branches
14 var intValue = Z(0);
15 for (var i = 0; i < rawBytes.length; i++) {
16 intValue += Z(rawBytes[i] * $pow(2, 8 * i));
17 }
18 /*
19 Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
20 */
21
22 if (!isUnsigned) { // steps 5-6
23 // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
24 var bitLength = elementSize * 8;
25
26 if (rawBytes[elementSize - 1] & 0x80) {
27 intValue -= Z($pow(2, bitLength));
28 }
29 }
30
31 return intValue; // step 7
32};
Note: See TracBrowser for help on using the repository browser.