package com.softgraf.model;

// 23
// não deve ser estendido
final public class ConverterBase {

	// não deve ser instanciado
	private ConverterBase() {}
	
	// Sistema Decimal para Binário
	// Ex.: Dado um inteiro retorna [1 0 1 0 ...]
	// Obs.: retorna vetor de bits na ordem inversa!
	public static int[] decToBin(int dec, int bits){
		String strBin = Integer.toBinaryString(dec);
		int[] vetBits = new int[bits];
		for (int i=strBin.length() - 1, j=0; i>=0; i--, j++){
			vetBits[j] = strBin.charAt(i) == '1' ? 1 : 0;
			if (j >= bits)
				break;
		}
		
		return vetBits;
	}
	
	// Sistema Binário para Decimal
	// Ex.: Dado um vetor [1 0 1 0 ...] retorna um inteiro
	// Obs.: vetBits deve estar na ordem inversa!
	public static int binToDec(int[] vetBits){
		StringBuilder strBin = new StringBuilder();
		for (int i : vetBits){
			strBin.append(i);
		}
		
		return Integer.valueOf(strBin.reverse().toString(), 2);
	}

}
