]> git.wincent.com - hextrapolate.git/blob - src/convert.js
75e8ee3a5b77b544f3a33554c20f09e1f20e5d45
[hextrapolate.git] / src / convert.js
1 /**
2  * Copyright 2015-present Greg Hurrell. All rights reserved.
3  * Licensed under the terms of the MIT license.
4  *
5  * @flow
6  */
7
8 'use strict';
9
10 import addDigits from './addDigits';
11 import getDigits from './getDigits';
12 import joinDigits from './joinDigits';
13 import multiplyDigits from './multiplyDigits';
14
15 /**
16  * Convert `number` in base `inBase`, to base `outBase`.
17  */
18 export default function convert(
19   number: string,
20   inBase: number,
21   outBase: number
22 ): string {
23   const digits = getDigits(number, inBase);
24   let result = [0];
25   let power = [1];
26   for (let i = 0; i < digits.length; i++) {
27     if (digits[i]) {
28       result = addDigits(
29         result,
30         multiplyDigits(power, digits[i], outBase),
31         outBase
32       );
33     }
34     power = multiplyDigits(power, inBase, outBase);
35   }
36   return joinDigits(result, outBase);
37 }