float 按位压缩为int,然后按位解压为float不丢失精度code functions to pack and unpack a range of float
float 按位压缩为int,然后按位解压为float 不丢失精度 code functions to pack and unpack a range of float into a limited number of bits: unsigned int pack_float( float val,float minVal,flaot maxVal,int bits)
float unpack_float( unsigned int val,float minVal,float maxVal int bits)
unsigned int pack_float(float val, float minVal, float maxVal, int bits) { assert(bits < 32); assert(val >= minVal && val < maxVal); return (unsigned int)(1U<<bits)*(val-minVal)/(maxVal-minVal); }
float unpack_float(unsigned int val, float minVal, float maxVal, int bits) { assert(bits < 32); assert(val < (1U<<bits)); return val*(maxVal-minVal)/(1U<<bits)+minVal; }