byte[] buffer = new byte[10];
buffer = System.Text.Encoding.Unicode.GetBytes("aa");这时候, buffer的Lenght变成4了, 有希望他的长度一直是最开始申明的10... 应该怎样可以实现呢?

解决方案 »

  1.   

    非这样做的话,只好判断length是否为10,然后将后面补空字符了。
      

  2.   

    先澄清下lz的错误概念byte[] buffer = new byte[10]; //内存中分配10 byte空间,并让buffer指向它buffer = System.Text.Encoding.Unicode.GetBytes("aa"); //buffer指向新的内存(猜测GetBytes中分配的)。上句分配的10 byte空间已经准备好被垃圾收集了。因此byte[] buffer = new byte[10]; 完全是多余的。
      

  3.   

                byte[] buffer = new byte[10];
                System.Text.Encoding.Unicode.GetBytes("aa").CopyTo(buffer, 0);
      

  4.   

    byte[] buffer = new byte[10];
    buffer = System.Text.Encoding.Unicode.GetBytes("aa");
    这样,其实,已经变了,buffer已经不是指向原来的那个new byte[10]的起始地址,而是一个新的地址了如果你想不变的话,只能这样
    byte[] buffer = new byte[10];
    byte[] buffer2= System.Text.Encoding.Unicode.GetBytes("aa");然后,把 buffer2的前10个复制到buffer中,如果少于10个就有多少复制多少个过去