美文网首页
一个数据压缩算法

一个数据压缩算法

作者: ww4u | 来源:发表于2018-03-10 08:30 被阅读0次
    • 从数据中均匀地提取一组数据,有一个比较经典的算法
    • 以前在做数据抽取时非常地熟练
    • 今天再次使用时,居然忘了怎样实现了,主要是理不清求余和求商间的使用关系了
    • 简单推导一下
      • 总共s个数,均匀地分成n组,每组有g个,余数为 m
      • 即:s = g*n + m
      • 那么每输出一组 就 累计一次 n,则 总共累计数值 为 n * m
      • 所以,可以指定如下的规则:
        • 每输出一组后,累计一次m
        • 当m大于或等于n是,回滚一次n,而且当前组数量为g+1
        • 由于是从0开始累计的,所以第一组的数量一定为 g
        • 这样总共可以回滚m次
        • m就是余数
    //! now for compress
        int rad, rem;
    
        rad = inLen / maxOutLen;
        rem = inLen % maxOutLen;
    
        //! now for compress
        int acc = 0;
        int outIndex = 0;
        for ( int i = 0; i < maxOutLen; i++, outIndex += rad )
        {
    
            pOut[ i ] = pIn[ outIndex * skipI ];
    
            acc += rem;
            if ( acc >= maxOutLen )
            {
                acc -= maxOutLen;
                outIndex++;
            }
        }
    
    

    相关文章

      网友评论

          本文标题:一个数据压缩算法

          本文链接:https://www.haomeiwen.com/subject/iyamfftx.html