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.