# Codesignal: Computer Units to Byte

Given the `capacity`

of a hard drive and its measure `unit`

, return its capacity in bytes.

Here are all possible measure units and their sizes:

Kilobyte (KB) | 1,024 bytes |
---|---|

Megabytes (MB) | 1,048,576 bytes |

Gigabyte (G) | 1,073,741,824 bytes |

Terabyte (TB) | 1,099,511,627,776 bytes |

Petabyte (P) | 1,125,899,906,842,624 bytes |

**Example**

For `capacity = 12`

and `unit = "KB"`

, the output should be

`ComputerUnitsToByte(capacity, unit) = "12288".

`12 * 1024 = 12288`

, which is the answer.

**Input/Output**

**[time limit] 4000ms (php)**

**[input] integer capacity**Disk capacity.

*Constraints:*`1 ≤ capacity ≤ 100`

.**[input] string unit**Unit symbol, one of the following strings:

`'KB'`

,`'MB'`

,`'G'`

,`'TB'`

or`'P'`

.**[output] string**The answer as a string. It is guaranteed to be smaller than

`2`

.^{51}

## Solution

The solution is quite obvious that the capacity must be multiplied by a power with base 1024, based on the unit. So KB is \(1024^1\), MB is \(1024^2\) and so on. In order to have a solution which is as short as possible, we'll use some JavaScript trickery. As we can assume, that only the given units are passed as argument, we focus on the first character and search this character in a string:

ComputerUnitsToByte = (c, u) => c * Math.pow(1024, 1 + "KMGTP".indexOf(u[0])) + ""

Since JavaScript doesn't have int64 support, a lot of other tricks don't work and as such I had the shortest solution with this snippet.