这个字节数组由字符串和二进制数据组成,前端是字符串,后段时二进制数据,他们的分隔是四个连续的回车符,怎样把字符串和二进制数据分别提取出来?谢谢

解决方案 »

  1.   

    如果字符串是定长的,使用Marshal.PtrToStructure 方法
    如果字符串不是定长的,那就没有什么好办法了,自己一个一个的取吧,呵呵.
      

  2.   

    一个一个取?能否说的详细一点?我看asp处理文件上传的时候好像有相似的处理,但是不是很明白
      

  3.   

    byte[] bytes1 = System.Text.Encoding.Default.GetBytes("这是字符串\n\n\n\n");
    byte[] bytes2 = new byte[]{1,33,23,3,0,56,55,235,5};//二进制数 byte[] bytes = new byte[bytes1.Length + bytes2.Length];

    //合并二进制流
    MemoryStream ms = new MemoryStream(bytes);
    ms.Write(bytes1,0, bytes1.Length);
    ms.Write(bytes2,0, bytes2.Length);

    int count = 0,pos = 0;
    //开始找四个'\n'
    for(int i=0; i<bytes.Length; i++)
    {
    if (bytes[i] == (int)'\n')
    {
    count++;
    if( count == 4)
    {
    pos -= 4;
    break;
    }
    }
    } if (count == 4)
    {
    //这里,bytes字节数组里从0 到 pos 的位置就是你要的字符串
    //从pos + 5 开始到最后,就是你要的二进制
    }
      

  4.   

    if( count == 4)

    pos -= 4; //这里要改为 ===> pos = i - 4;打太快了,不好意思哦。
    break;
    }
      

  5.   

    欢迎加入C#和Java技术交流群:14518483
    群建立不久,还望大家多多支持