compress
私は、zlibライブラリ(および関数)を使用して、floatvarsを含む構造体を圧縮する方法を探していました。
私が見たすべての例は、文字列、具体的にはを圧縮する方法を示していますunsigned char*
。
私の構造体は簡単です:
struct Particle{
float x;
float y;
float z;
};
そして、私は以下のように圧縮関数を呼び出しています:
uLong initSize = sizeof(Particle);
uLongf destSize = initSize * 1.1 + 12;
Bytef *dataOriginal = (Bytef*)malloc( initSize );
Bytef *dataCompressed = (Bytef*)malloc( destSize );
Particle p;
memset( &p, 0, sizeof(Particle) );
p.x = 10.24;
p.y = 23.5;
p.z = 7.4;
memcpy( dataOriginal, &p, sizeof(p) );
compress( dataCompressed, &destSize, dataOriginal, initSize );
しかし、データを解凍して内部の内容を確認しようとすると、最初のfloat値に戻ることができません。
Bytef *decomp = (Bytef*)malloc( initSize );
uncompress( decomp, &initSize, dataCompressed, destSize );
for( int i = 0 ; i < initSize ; i++ ){
std::cout << (float)decomp[i] << std::endl;
}
誰かがこの問題の解決策を持っているなら、私は今2日からそれを続けています...