Float-Vektor in Byte-Vektor umwandeln und zurück
Ich versuche, einige Konvertierungen zwischen Float- und vorzeichenlosen Char-Arrays (in diesem Fall std :: vector) durchzuführen, und bin auf einige Probleme gestoßen.
Ich habe den Vektor von floats in unsigned char wie folgt konvertiert ...
vector<float> myFloats;
myFloats.push_back(1.0f);
myFloats.push_back(2.0f);
myFloats.push_back(3.0f);
const unsigned char* bytes = reinterpret_cast<const unsigned char*>(&floats[0]);
vector<unsigned char> byteVec;
for (int i = 0; i < 3; i++)
byteVec.push_back(bytes[i]);
Ich hoffe, ich habe das richtig gemacht, wenn nicht, wäre das der Grund, warum der nächste Teil nicht funktioniert.
// converting back somewhere later in the program
unsigned char* bytes = &(byteVec[0]); // point to beginning of memory
float* floatArray = reinterpret_cast<float*>(*bytes);
for (int i = 0; i < 3; i++)
cout << floatArray[i] << endl; // error here
Ich habe versucht, (Bytes) anstelle von (* Bytes) in diesem letzten Teil zu verwenden, aber das gibt die falschen Werte aus. Dabei wurden auch die falschen Werte ausgegeben
for (int i = 0; i < 3; i++)
cout << (float)bytes[i] << endl;
Ich bin mir nicht sicher, wie ich meine ursprünglichen Float-Werte wiederherstellen kann.
Danke für jede Hilfe.