解决方案 »

  1.   

     //如果输入流有Length 长度为Length * 30 因为压缩率为3%
                    try { length = (int)input.Length * 20; }
                    catch { length = 65536; }你这代码和注释,看的我也是醉了
    明明写的是乘以20吗
    而且一个int型的计算赋值,加什么try,catch,这东西有可能会出错??
      

  2.   

    length = (int)input.Length * 20;
    这句代码是先将input.Length转int型,再乘以20,而不是结果转int型而即便是写成 (int)(input.Length * 20);
    它也永远不会出错
    即便结果已经大于int型的取值范围了,也能成功转int型,只不过是会丢失精度罢了
    而且int型是32位的,65536又是闹哪样,16位??16位也最多到65535,而不会到65536啊,这65536看的我十分费解
      

  3.   

    MemoryStream ms = new MemoryStream(length);
     ms.Write(block, 0, byteRead);这代码更让人费解
    压缩完的文件流,没有写会文件,这是写哪里去了?