Bases
import java.util.ArrayList;
import java.util.List;
class BaseConverter {
private int originalBase;
private int[] originalDigits;
BaseConverter(int originalBase, int[] originalDigits) {
this.originalBase = originalBase;
if(this.originalBase < 2) throw new IllegalArgumentException("Bases must be at least 2.");
this.originalDigits = originalDigits;
for(int i=0; i < this.originalDigits.length; i++){
if (this.originalDigits[i] < 0) throw new IllegalArgumentException("Digits may not be negative.");
if (this.originalDigits[i] >= originalBase) throw new IllegalArgumentException("All digits must be strictly less than the base.");
}
}
int[] convertToBase(int newBase) {
int number = 0;
int toAdd = 0;
int originalDigitsLength = this.originalDigits.length;
List<Integer> resultList = new ArrayList<>();
int exp = originalDigitsLength-1;
if(newBase < 2) throw new IllegalArgumentException("Bases must be at least 2.");
for(int i=0; i < originalDigitsLength; i++){ // mettere foreach??
number += ((int) Math.pow(originalBase,exp)) * this.originalDigits[i];
exp--;
}
while (number >= newBase){
toAdd = number % newBase;
number = (int) number / newBase;
resultList.add(toAdd);
}
toAdd = number % newBase;
number = (int) number / newBase;
resultList.add(toAdd);
int[] resultConversion = new int[resultList.size()];
for (int i = 0; i < resultList.size(); i++) {
resultConversion[i] = resultList.get(i);
}
for (int i = 0; i < resultConversion.length/ 2; i++) {
int temp = resultConversion[i];
resultConversion[i] = resultConversion[resultConversion.length - 1 - i];
resultConversion[resultConversion.length - 1 - i] = temp;
}
return resultConversion;
}
}
Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
please click it!
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)
The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.