问个有关压缩数组数据的问题

leon7909 2006-08-14 01:59:42
有一个1000*754大小的数组,数组元素为long型值,这个数组要通过网络进行发送,所以发一个完整的数据就得要发送3000kb的数据,这样就很慢了.但是这个数组有一个特点就是一般的情况下大部分的元素值都是零,部分有值,但也有全有值的情况,请问这个数组用什么方式压缩呢?比如只保存有值的元素,然后用压缩算法再压缩一遍,但到了另一边怎么还原呢,我还是希望能有一个好的算法能只让我传有数据的部分.请高人指点一下.万分感激
...全文
284 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon7909 2006-08-20
  • 打赏
  • 举报
回复
换个方法把问题解决了,Mackz老兄可能还没明白我的意思,我并不是要本地的效能.我只要求网络传输的数据尽可能的小,所以自已先组织好数据,再拿去你说的压缩算法里压缩,这样发送的话压力会小很多.散分了.
housisong 2006-08-15
  • 打赏
  • 举报
回复
数据是图像数据吗? 允许数据失真吗? 如果是,可以用相关的有损压缩,压缩率会比zip等高很多
天涯倦客 2006-08-15
  • 打赏
  • 举报
回复
稀疏矩阵的方式或者压缩算法
leon7909 2006-08-15
  • 打赏
  • 举报
回复
压缩固然好,但是也是要花比较长时间不是,我试过几个压缩模块,最快的压缩1000*754个LONG型值的数组,也要三百到四百毫秒,所以我就希望压缩前的数据尽可能的小,这样压缩起来会更快吧.
Analyst 2006-08-15
  • 打赏
  • 举报
回复
用游程压缩算法,简称RLE,对你这种情况又快又好。
菜牛 2006-08-15
  • 打赏
  • 举报
回复
如果你自己对数据进行处理,难道不费时间吗?只不过把压缩算法干的活分出来,效率只能更差。
leon7909 2006-08-15
  • 打赏
  • 举报
回复
按顺序传送非0的数据,再传一个记录数据是否为0的位数据块内存,非0位是1,0位是0,每个数据用一位2进制位作为标识。
==========================================================
这个方法不错,在非零的数组成员达到25000以上后可以达到比较好的效果,25000以下时换成别的做法.期待更多好的想法.分不够再开.
CUG122032 2006-08-15
  • 打赏
  • 举报
回复
稀疏矩阵???

楼上有一位说不需要处理.是这样的吗?

菜牛 2006-08-14
  • 打赏
  • 举报
回复
搂主仔细理解一下压缩算法,不需要你对数据进行处理。
碧螺春的马甲 2006-08-14
  • 打赏
  • 举报
回复
压缩算法里面有这样的考虑。
得到数据是什么样子的就给算法,自己做不一定比他快。
小李匪盗 2006-08-14
  • 打赏
  • 举报
回复
发送有值数据的序号和数据
DentistryDoctor 2006-08-14
  • 打赏
  • 举报
回复
GZip?

另外可以考虑稀疏矩阵。
syy64 2006-08-14
  • 打赏
  • 举报
回复
按顺序传送非0的数据,再传一个记录数据是否为0的位数据块内存,非0位是1,0位是0,每个数据用一位2进制位作为标识。
leon7909 2006-08-14
  • 打赏
  • 举报
回复
壓縮的源碼我也有一堆,這個工序也是要做的,我的主要目的是想問怎樣組織壓縮前的數據,排除掉那些為零的,只保留有值的數據,而且到另一邊可以回溯成原來的樣子,
碧螺春的马甲 2006-08-14
  • 打赏
  • 举报
回复
zip 的算法有 源码的,用就是了。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧