我一直在寻找一种压缩方法,使用 zlib 库(和函数compress
)一个包含浮点变量的结构。
我看到的每个示例都展示了如何压缩字符串,特别是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 );
但是当我尝试解压缩我的数据以查看里面的内容时,我无法回到我的初始浮点值:
Bytef *decomp = (Bytef*)malloc( initSize );
uncompress( decomp, &initSize, dataCompressed, destSize );
for( int i = 0 ; i < initSize ; i++ ){
std::cout << (float)decomp[i] << std::endl;
}
如果有人有这个问题的解决方案,我现在已经两天了......