Quiero convertir un string de 6 bytes en hexadecimal a un float
float desencapsularArchivo::hex2dec(string aConvertir)
{
int cantHex = aConvertir.size();
float decimal = 0;
for(int hexNum = 0;hexNum < cantHex; hexNum++)
{
char piv = aConvertir.at(hexNum);
float hex;
switch(piv)
{
case 'A': case 'a':
hex = 10;
break;
case 'B': case 'b':
hex = 11;
break;
case 'C': case 'c':
hex = 12;
break;
case 'D': case 'd':
hex = 13;
break;
case 'E': case 'e':
hex = 14;
break;
case 'F': case 'f':
hex = 15;
break;
default:
hex = (int)piv - 48;
}
decimal = decimal + hex * pow(16, cantHex - hexNum - 1);
}
return decimal;
}
Si quiero introducir por ejemplo la cadena 00805f181015
el resultado es:
551351222272
en vez de:
551351226389
Segun mis pruebas faltan sumas los ultimos 4 caracteres del hexadecimal, pero no se por que no lo hace.
Cabe mencionar que para imprimir uso cout << "Decimal: " << setprecision(0) << fixed << decimal;