数字串压缩
我有一串数字,我想压缩后依然为数字(可在键盘上输入),大家有没有比较好的算法提供呢
我的数字串长度在32位左右

解决方案 »

  1.   

    压缩后依然为数字是什么意思?
    要想压缩,用delphi7以上版本带的zlib单元,很好用
      

  2.   

    如果是数字字符串,应该可以用BCD码存储,每两个字符存为一个字节,这样可以压缩一半。
      

  3.   

    楼上的有道理,一个字符ASCII码最多128,也就是说4位二进制就可以存放,两个字符正好一个字节,确实是个好方法
    还有个方法,因为都是数字串,所以可以直接用一个4位二进制代替每个数字,其实和BCD码一样
    另外一种方法就是使用36进制,16进制也可以,不过压缩率不大
      

  4.   

    简省不等于压缩。在很多类似的应用场合,会提到一个“短号”,所谓短号就是将一些已知的东西,通过某种关联关系因应不会产生冲突而进行固化。比如说金额,通常情况下会以一个8字节的浮点数来表示,但是由于操作当中首先精确位只到分位,那么就可以通过将该值放大100位,而形成一个以分为单位的整数。这样子就可以由一个4字节的整数来替代原来8字节的浮点数。而实际上四字节可以表示的范围是:0~4294967295,在这个交易当中是否会有如此大呢?仅仅只是一个20位,就可以表示0~1048575(单位:分,即一万元),如果你的交易限额在10000元以下,那是不是就可以在这四个字节当中再节省出12位,范围是0~4095,而日期的范围是0101~1231,用于表示日期可以说也是足够了。于是你就可以设计使用一个四字节的内容来容纳金额和日期(实际上日期并不需要12bit,有11bit,范围是0~2047足够表示日期了,那么对于金额就有21bit供使用,范围可以达到0~2097151)