byte[] data = new byte[1024 * 64];如果data中只有32k的数据,那么其余的32k就会被填充进0字符,
data.Length 也是 1024 * 64
如何把这些空的字符串去掉,data.Length为实际的1024 * 32 而不是上面的64k呢?多谢

解决方案 »

  1.   

    你new的数组的长度本来就是1024*64,它就是64K
      

  2.   

    byte[] data = 要填充的数据
    //byte[] data = new byte[1024 * 64];这样之后大小应该不能改变了吧
      

  3.   

    楼主,很简单啊
    你把你内存弄成32k的不就行了
    或者这样:(一正经我就想加冒号)
    不要声明byte【】
    直接给它赋值
    比如
    byte[]data=encoding.ascii.getbytes("color wolf");
      

  4.   

    没必要去掉那些多余的0,因为你完全可以无视它们,对Byte[]的很多操作中,一般都有带有有效数据起始位置和长度的重载形式,你在使用该Byte[]的时候,只要指定有效数据的起始位置和数据长度,其余为0的部分自动无视的。
      

  5.   

    数组不可以的, List才行
    byte[] bs = new byte[] { 0, 1, 2, 3, 4, 5, 6 };
    List<byte> blist = new List<byte>();
    blist.AddRange(bs);
    blist.RemoveAll(b => b == 0);
    MessageBox.Show(blist.Count.ToString());
      

  6.   

    byte[]tmp=new byte[32*1024]
    Array.Copy(data,tmp,tmp.Length);
    data=tmp;