Convert float vector to byte vector and back
byte, c++, floating-point
Solution
Solved:
I think the problem was here
vector<unsigned char> byteVec;
for (int i = 0; i < 3; i++)
byteVec.push_back(bytes[i]);
I removed that and replaced it with
vector<unsigned char> byteVec(bytes, bytes + sizeof(float) * myFloats.size());
then the rest works fine!
Also, remember to use (bytes) instead of (*bytes) here
float* floatArray = reinterpret_cast<float*>(bytes);
Problem
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.