Convertir vector flotante a vector byte y viceversa

Estoy tratando de hacer algunas conversiones entre arrays de caracteres flotantes y no firmados (std :: vector en este caso) y me he encontrado con algunos problemas.

He convertido el vector de carrozas a caracteres sin firmar como este ...

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]);

Espero haber hecho esto correctamente, si no, esa sería la razón por la que la siguiente parte no funcionará.

// 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

He intentado usar (bytes) en lugar de (* bytes) en la última parte, pero eso imprime los valores incorrectos. Al hacer esto también se imprimieron los valores equivocados.

for (int i = 0; i < 3; i++)
    cout << (float)bytes[i] << endl;

No estoy seguro de cómo recuperar mis valores de flotación originales de esto.

Gracias por cualquier ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta