如何在c#中用char分割字节数组

时间:2017-11-21 15:19:27

标签: c# arrays qt

我有一个字节数组,想用* char分割它 我是C ++ / Qt开发人员,我可以使用Qt

中的代码轻松完成
QByteArray byteArray;
QList<QByteArray> byteArrayList;

byteArray = file.readAll();
file.close();

byteArrayList = byteArray.split('*');

如何在C#中用char分割字节数组?

2 个答案:

答案 0 :(得分:2)

search-mode

根据需要更改编码。

答案 1 :(得分:0)

我不确定内置是什么,因为它不是常见的场景;但是你可以按索引搜索:

(这里使用string纯粹是为了说明;实际的分割代码不使用它)

static void Main()
{
    // pretend this isn't text
    byte[] bytes = Encoding.ASCII.GetBytes("askdjhkas*hdaskjdhakjshdjkahs*dkujyash");

    foreach(var chunk in Split(bytes, (byte)'*'))
    {
        // cheating with text to see if it worked
        var s = Encoding.ASCII.GetString(chunk.Array, chunk.Offset, chunk.Count);
        Console.WriteLine(s);
    }
}

static IEnumerable<ArraySegment<byte>> Split(byte[] data, byte splitBy)
{
    int start = 0, end;
    while((end = Array.IndexOf<byte>(data, splitBy, start)) > 0)
    {

        yield return new ArraySegment<byte>(data, start, end - start);
        start = end + 1;
    }
    end = data.Length;
    if ((end - start) > 0)
    {
        yield return new ArraySegment<byte>(data, start, end - start);
    }
}

注意:这将是“跨度”的一个很好的场景。