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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage