我有一个字节数组,想用* char分割它 我是C ++ / Qt开发人员,我可以使用Qt
中的代码轻松完成QByteArray byteArray;
QList<QByteArray> byteArrayList;
byteArray = file.readAll();
file.close();
byteArrayList = byteArray.split('*');
如何在C#中用char分割字节数组?
答案 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);
}
}
注意:这将是“跨度”的一个很好的场景。