none
byte数组分割 RRS feed

  • 问题

  • 大家好,如何将一个byte数组分割;

    比如一个byte数组为{7B,1,5,4,6,4,2,1,6,5,1,7D,7B,2,1,2,1,3,2,1,7D,7B......7D}

    以0x7D分割它,怎么做?

    2010年7月13日 1:49

答案

  •       byte separator = 0x7D;
          byte[] sourceArray = new byte[] { 0x7B, 1, 5, 4, 6, 4, 2, 1, 6, 5, 1, 0x7D, 0x7B, 2, 1, 2, 1, 3, 2, 1, 0x7D, 0x7B, 0x7D };
          List<byte[]> separatedArray = new List<byte[]>();
          List<byte> fragment = new List<byte>();
    
          foreach (byte ch in sourceArray)
          {
            if (ch != separator)
            {
              fragment.Add(ch);
              continue;
            }
    
            if (fragment.Count > 0)
            {
              separatedArray.Add(fragment.ToArray());
              fragment.Clear();
            }
          }
    
          if (fragment.Count > 0)
          {
            separatedArray.Add(fragment.ToArray());
            fragment.Clear();
          }
    2010年7月14日 7:42
  • 你好!

         我知道位置不固定,我的意思是使用IndexOf方法,通过0x7D这个值找到索引,然后分割。


    周雪峰
    2010年7月15日 5:34
    版主

全部回复

  • 你好!

        使用Array.IndexOf()方法获取指定元素的索引,然后再这个索引出分割数组(建立两个新的数组,把原数组的两部分元素拷贝过去)。


    周雪峰
    2010年7月13日 12:22
    版主
  • 雪峰,您好!

              索引是可以的,但是我要分割的元素位置是不固定的,正是因为此才要分割。

    2010年7月14日 3:16
  •       byte separator = 0x7D;
          byte[] sourceArray = new byte[] { 0x7B, 1, 5, 4, 6, 4, 2, 1, 6, 5, 1, 0x7D, 0x7B, 2, 1, 2, 1, 3, 2, 1, 0x7D, 0x7B, 0x7D };
          List<byte[]> separatedArray = new List<byte[]>();
          List<byte> fragment = new List<byte>();
    
          foreach (byte ch in sourceArray)
          {
            if (ch != separator)
            {
              fragment.Add(ch);
              continue;
            }
    
            if (fragment.Count > 0)
            {
              separatedArray.Add(fragment.ToArray());
              fragment.Clear();
            }
          }
    
          if (fragment.Count > 0)
          {
            separatedArray.Add(fragment.ToArray());
            fragment.Clear();
          }
    2010年7月14日 7:42
  • 你好!

         我知道位置不固定,我的意思是使用IndexOf方法,通过0x7D这个值找到索引,然后分割。


    周雪峰
    2010年7月15日 5:34
    版主