Solo para números enteros.
Ejemplo de uso: binarioHex("100100"); y te devuelve un string con el numero en hexadecimal
string ALU::hexadecimal(string num)
{
//pasa cada 4 dígitos de binario a uno en hexadecimal
if(num=="0000"){
return "0";
}else if(num=="0001"){
return "1";
}else if(num=="0010"){
return "2";
}else if(num=="0011"){
return "3";
}else if(num=="0100"){
return "4";
}else if(num=="0101"){
return "5";
}else if(num=="0110"){
return "6";
}else if(num=="0111"){
return "7";
}else if(num=="1000"){
return "8";
}else if(num=="1001"){
return "9";
}else if(num=="1010"){
return "A";
}else if(num=="1011"){
return "B";
}else if(num=="1100"){
return "C";
}else if(num=="1101"){
return "D";
}else if(num=="1110"){
return "E";
}else if(num=="1111"){
return "F";
}
return 0;
}
//como a este metodo no se le pueden pasaar numeros decimales se separa la parte decimal de la entera y se las pasa al metodo por separado
string ALU::binarioHex(string binario)
{
//coges el numero en binario
string b = binario+"";
string sol = "";//solucion
//separa el numero de 4en4 dígitos
int numeroSeparaciones = binario.length()/4;
if(binario.length()%4>0){//si el numero no es exacto añade una separacion
numeroSeparaciones++;
}
for (int var = binario.length(); var < numeroSeparaciones*4; ++var) {//si el numero no es esacto añade 0 a la derecha
b="0"+b;
}
for (int var = 0; var < numeroSeparaciones; ++var) {//coge los digitos binarios de 4 en 4 y llamando al metodo anterior, los pasa a hexadecimal
sol+=hexadecimal(b.substr((var*4),4));
}
return sol;
}