Konvertieren von double zu unsigned char
-
Hi!
Ich muss ein 32bit integer in hexadezimal umrechnen. Dazu erstelle ich 4 char variablen die ich entsprechend berechne:
int Dateigroesse;
char Hex1, Hex2, Hex3 Hex4;Hex1 = DateiGroesse/pow(16,6);
Hex2 = (DateiGroesse - Hex1 * pow(16,6)) / pow(16,4);
Hex3 = (DateiGroesse - Hex2 * pow(16,4)) / pow(16,2);
Hex4 = DateiGroesse - Hex3 * pow(16,2);So bekomme ich die vier einzelnen bytes die ich brauche.
Die Berechnung funktioniert soweit. Beim Compilieren bekomme ich allerdings
die Meldung:warning C4244: '=' : conversion from 'double' to 'unsigned char', possible loss of data
Die Meldung stimmt ja auch. Aber ich rechne den integer wert ja soweit runter das er immer in ein byte passt.
Wie kann ich diese Warnung wegbekommen?
danke
Till
-
Till schrieb:
Die Meldung stimmt ja auch. Aber ich rechne den integer wert ja soweit runter das er immer in ein byte passt.
Woher soll dein Compiler das wissen?
-
Hex1 = static_cast<char>(DateiGroesse/pow(16,6));
wenns nach deinem Code geht
Hex1 = static_cast<unsigned char>(DateiGroesse/pow(16,6));
wenns nach dem Topic geht
-
Der der Compiler das nicht wissen kann ist mir auch klar.
Ich will nur die hässlichen warnungen wegbekommen.Mit dem static_cast funktionierts... danke.
Till