Ich habe versucht, folgende:Dump Hex-Schwimmer in C++
std::cout << std::hex << 17.0625;
Aber es abgeladen es in dezimal. Ich würde gerne 11.01 (17.0625 in Hex) sehen. Wie kann ich einen Gleitkommawert in Hex ausgeben?
Bitte nicht bieten Lösungen wie:
void outhexdigits(std::ostream& out, fp_t d, int max_chars=160)
{
while(d > 0. && max_chars)
{
while(d < 1. && max_chars){
out << '0';
--max_chars;
d*=16;
}
if (d>=1. && max_chars) {
int i = 0;
while (d>=1.)
++i, --d;
out << std::hex << i;
--max_chars;
}
}
}
Gibt es eine Möglichkeit Float-Zahlen in hex in STL-Dump/steigern?
Ehrlich gesagt finde ich, dass C++ bei der Ausgabe solcher formatierter Formulare ziemlich nervig ist. In diesen Fällen verwende ich formatierten Druck im C-Stil. – Xephon
Sie müssen 'memcpy' in ein' int' und die hexadezimale Darstellung davon ausdrucken. 'memcpy' ist die einzige sichere Möglichkeit, die Bits, die ein Objekt eines Typs bilden, als einen anderen Typ zu betrachten, ohne Undefined Behavior zu treffen (Sie treffen stattdessen ein unspezifiziertes Verhalten und es liegt an Ihnen zu wissen, dass die Bits ein gültiges int bilden "Repräsentation". – BoBTFish
Möchten Sie die hexadezimale Darstellung des Speicherlayouts eines "double" oder einen lesbaren FP-Wert in der Basis 16 drucken? –