1.我byte[]里有不可显示字符
2.我不爱对string 操作,速度慢所以我直接对byte[]进行操作我想问一下
1.如何给 byte[] 的前指定位赋值?比如 
   byte[] saveBy = new byte[20]; 
   byte[] newBy1 = {1,2,3,4,5};
   byte[] newBy2 = {0,55,254,222,44,88,12};
我想 把 newBy1 的值 给saveBy[]的前下标0-5的位置 
相当于 saveBy[0] = newBy1[0];saveBy[1] = newBy1[1];saveBy[2] = newBy1[2];.......
,把newBy2的值给 saveBy[]的前下标6-12的位置 如 saveBy[6] = newBy2[0] ..........
应该用什么方法,字节少了那么赋值,字节多了,写循环很难看,不清晰,byte[]有没有自己的方法可以指定下标复值????
2.如何在byte[]中查找byte[];
比如
byte[] saveBy = {0,1,3,4,5,6,7,8,9};
byte[] findBy = {4,5,6};
在saveBy 能不能里查找 findBy,查找到了 得到下标或者信息
应该用什么方法忘高手指教

解决方案 »

  1.   

    还是用string吧~!
     有人用过吗? 来看看
      

  2.   

    int i=0;
    for(;i<newBy1.Length;i++) saveBy[i] = newBy1[i];
    for(int j=0; j<newBy2.Length; j++, i++) saveBy[i] = newBy2[j];
      

  3.   

    newBy1.CopyTo(saveBy, 0);
    newBy2.CopyTo(saveBy, newBy1.Length);
      

  4.   

    byte[] ba = new byte[]{1,2,3,4} ;
    byte[] bb = new byte[]{5,6,7,8} ;
    byte[] bc = new byte[8] ;
    ba.CopyTo(bc,0) ;
    bb.CopyTo(bc,ba.Length) ;
      

  5.   

    可以用Array.Copy静态方法,比较简单
    如果要运行效率,还是得用指针,unsafe代码
      

  6.   

    不用string 不用循环,我实验下,LOVVER的方法,还有更好的方法吗?viena(维也纳nn)
      

  7.   

    同意viena(维也纳nn)
    用用Array.Copy静态方法......
    或指针
      

  8.   

    至于查找,你只能自己写个方法了。
    比如:在合并后的array(ArrayC)中查找合并前的某一个array(ArrayA),你可以这样:
    for(int i = 0;i<ArrayC.Length-ArrayA.Length;i++)
    {
      if(ArrayC[i] = ArrayA[0])
      {
        bool blYes = true;
        for(int j = 0;j<ArrayA.Length;j++)
        {
          if(ArrayC[i+j] != ArrayA[j])
          {
            blYes = false;
            break;
          }
        }
        if(blYes)
          return i;//i就是ArrayA在ArrayC中的位置。
      }
    }
    return -1;//-1表示没有找到