Преобразовать вектор с плавающей точкой в вектор байтов и обратно
Я пытаюсь выполнить некоторые преобразования между массивами с плавающей точкой и без знака (в данном случае std :: vector), и у меня возникли некоторые проблемы.
Я преобразовал вектор с плавающей точкой в неподписанный символ следующим образом ...
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]);
Я надеюсь, что я сделал это правильно, если нет, то это будет причиной того, что следующая часть не будет работать.
// 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
Я пытался использовать (байты) вместо (* байтов) в этой последней части, но это печатает неправильные значения. При этом также печатались неправильные значения
for (int i = 0; i < 3; i++)
cout << (float)bytes[i] << endl;
Не уверен, как вернуть мои первоначальные значения с плавающей точкой из этого.
Спасибо за любую помощь.