将float转化为QByteArray(作为缓存区),再转化为float(基于C++和QT)
float *f = new float[4] ;
float *receive = new float[3] ;
f[0]=1.0;
f[1]=2.0;
f[2]=5.232;
f[3]=4.232;
QByteArray array(reinterpret_cast<const char*>(f), sizeof(float)*4);
//QMessageBox::information(NULL,"","Array:"+array/*+"\nSize:"+QString::number(array.size())*/);
memcpy(receive, array.left(sizeof(float)*3), sizeof(float)*3);
QMessageBox::information(NULL,"","Before:\nreceive[2]:"+QString::number(receive[2]));
结果:
array.remove(0, sizeof(float));//把最旧的点移出缓存区
memcpy(receive, array.left(sizeof(float)*3), sizeof(float)*3);
QMessageBox::information(NULL,"","Before:\nreceive[2]:"+QString::number(receive[2]));
建议:
其他数据转化为QByteArray使用QByteArray array(reinterpret_cast<const char>(f), sizeof(float)*4)的新形式,而QByteArray类型转化为其他类型推荐使用void *memcpy(void *destin, void source, unsigned n)函数。