float to int32 in hex [gelöst]
-
Guten Abend,
ich habe eine Funktion fn(), die mir einen float zwischen 0 und 1, nennen wir ihn floatZeroToOne, returned. Um die Ausgabe in einem anderen Programm zu verwenden brauche ich jedoch einen int32 im hex format.
Wie kann ich das konvertieren?
Für den ersten Teil scheint es mir am einfachsten,den float einfach mit INT_MAX zu multiplizieren, also
int rn = floatZeroToOne * INT_MAX;Aber wie bekomme ich das dann als 8 (!) digit hex? Zu kleine Werte müssen ja z.B. mit Nullen aufgefüllt werden?
Vielen Dank.
-
Meinst du damit, du willst den Wert hexadezimal ausgeben?
std::cout << std::hex << wert;
-
cout << std::hex << static_cast<unsigned int>( mein_float * ~0 );
-
wx++ schrieb:
Meinst du damit, du willst den Wert hexadezimal ausgeben?
std::cout << std::hex << wert;Dein Code hat das Problem, dass nicht immer 8 digits erzeugt werden, z.B.
dec:228982783
hex:da5ffff
Ich brauche aber 8 (!), siehe oben.adfasdf schrieb:
cout << std::hex << static_cast<unsigned int>( mein_float * ~0 );Meinst du mit mein_float den float zwischen 0 und 1, den int = float * INT_MAX oder vielleicht float = float * INT_MAX?
-
Vllt
float value = 0.0f; unsigned int foo = *reinterpret_cast<unsigned int*>(&value); std::cout << std::setfill('0') << std::setw(8) << std::hex << foo;?
-
fooer schrieb:
Vllt
float value = 0.0f; unsigned int foo = *reinterpret_cast<unsigned int*>(&value); std::cout << std::setfill('0') << std::setw(8) << std::hex << foo;?
Danke. Als ich setw gelesen hab ist die Erinnerung zurückgekommen...
Habe es jetzt folgendermaßen gelöst:int rn = floatZeroToOne * INT_MAX; cout << "dec:" << dec << rn << endl; cout << "hex:" << setfill('0') << setw(8) << hex << rn << endl;Vielen Dank an alle Beteiligten
