Skip to content

Instantly share code, notes, and snippets.

@gregzanch
Created November 12, 2019 06:38
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gregzanch/b6f207b67e9b88dec12cc1429d380a48 to your computer and use it in GitHub Desktop.
Save gregzanch/b6f207b67e9b88dec12cc1429d380a48 to your computer and use it in GitHub Desktop.
Base Conversion
function base_10_to_base_n(v: number,b: number,r:number[]=[]): number[]{
if(b==0) return;
if (Math.floor(v) != v || Math.floor(b) != b) return;
const div = Math.floor(v / b);
const rem = v - div * b
r.push(rem);
return div == 0 ? r.reverse() : base_10_to_base_n(div, b, r);
}
function base_n_to_base_10(val: number[], base: number) {
if (base == 0) return;
let sum = 0;
for (let i = 0; i < val.length; i++){
if (val[i] < 0 || val[i] > base)
throw new Error(`val (${val[i]}) should be in range (0 to ${base})`);
sum+=val[i]*Math.pow(base,(val.length-1-i)) //?
}
return sum;
}
function convert(val: number[]) {
return {
from: (base1: number) => {
return {
to: (base2: number): number[] => base_10_to_base_n(base_n_to_base_10(val,base1),base2)
}
}
}
}
convert([12])
.from(12)
.to(10) //?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment