Convert float vector to byte vector and back
I'm trying to do some conversions between float and unsigned char arrays (std::vector in this case) and i've run into some troubles.

I've converted the vector of floats to unsigned char like this...

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

I'm hoping i've done this correctly, if not that would be the reason why the next part wont work.

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

I've tried using (bytes) instead of (*bytes) in that last part but that prints the wrong values. Doing this also printed the wrong values

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

Not sure how to get my original float values back from this.

Thanks for any help.
Convert float vector to byte vector and back
===

I'm trying to do some conversions between float and unsigned char arrays (std::vector in this case) and i've run into some troubles.

I've converted the vector of floats to unsigned char like this...

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

I'm hoping i've done this correctly, if not that would be the reason why the next part wont work.

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

I've tried using (bytes) instead of (*bytes) in that last part but that prints the wrong values. Doing this also printed the wrong values

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

Not sure how to get my original float values back from this.

Thanks for any help.