C# LINQ获取子数组
我有一个C# LINQ获取子数组,c#,linq,substring,C#,Linq,Substring,我有一个字节[],我想提取数组的一部分并将其转换为字符串。我想使用LINQ并在一行中完成它。这是我能找到的最好的,但我失败了 String id = new String(payload.Skip(60).Take(92-60+1).ToString()); 将有效负载[60]提取为有效负载[92],并将其转换为字符串。有更好的办法吗?这个语法仍然有一些错误。您可以尝试以下方法: string.Concat((object[])payload.Skip(60).Take(92-60+1).Ca
字节[]
,我想提取数组的一部分并将其转换为字符串。我想使用LINQ并在一行中完成它。这是我能找到的最好的,但我失败了
String id = new String(payload.Skip(60).Take(92-60+1).ToString());
将有效负载[60]提取为有效负载[92],并将其转换为字符串。有更好的办法吗?这个语法仍然有一些错误。您可以尝试以下方法:
string.Concat((object[])payload.Skip(60).Take(92-60+1).Cast<object>().ToArray())
string.Concat((object[])payload.Skip(60.Take(92-60+1.Cast().ToArray())
您可以尝试以下方法:
string.Concat((object[])payload.Skip(60).Take(92-60+1).Cast<object>().ToArray())
string.Concat((object[])payload.Skip(60.Take(92-60+1.Cast().ToArray())
试试这个
String id =Encoding.ASCII.GetString(payload.ToArray().Skip(60).Take(92-60+1).ToArray())
试试这个
String id =Encoding.ASCII.GetString(payload.ToArray().Skip(60).Take(92-60+1).ToArray())
假设是UTF8编码的字符串,可以使用linq,如下所示:
Encoding.UTF8.GetString(bytes.Skip(60).Take(32).ToArray());
一个更直接、更高效的解决方案是:
Encoding.UTF8.GetString(bytes, 60, 32);
这避免了复制数组的部分,使用秒表快速检查显示速度快了20倍。假设使用UTF8编码的字符串,您可以像这样使用linq:
Encoding.UTF8.GetString(bytes.Skip(60).Take(32).ToArray());
一个更直接、更高效的解决方案是:
Encoding.UTF8.GetString(bytes, 60, 32);
这避免了复制阵列的部分,使用秒表快速检查显示速度快了20倍。无需linq
不需要linq
首先,您应该使用一些编码来将字节数组转换为字符串(在我看来,与字节数组转换为字符串的其他方法相比,这是一种安全的方法),这种编码取决于您的字节数组格式,并且您更了解它 第二,因为你有一个数组,最好使用内置的数组函数,比如,因为这比linq快,而且你不需要遍历数组的92个元素,你只需要遍历33个元素
var secondArray = new byte[92-60+1];
Array.Copy(payLoad, 60, secondArray, 0, 92-60+1);
UTF8Encoding encoding = new UTF8Encoding();
string result = encodin.GetString(secondArray);
首先,您应该使用一些编码来将字节数组转换为字符串(在我看来,与字节数组转换为字符串的其他方法相比,这是一种安全的方法),这种编码取决于您的字节数组格式,并且您更了解它 第二,因为你有一个数组,最好使用内置的数组函数,比如,因为这比linq快,而且你不需要遍历数组的92个元素,你只需要遍历33个元素
var secondArray = new byte[92-60+1];
Array.Copy(payLoad, 60, secondArray, 0, 92-60+1);
UTF8Encoding encoding = new UTF8Encoding();
string result = encodin.GetString(secondArray);
字节数组表示的内容可能重复?您希望如何将其转换为字符串?你能提供输入和输出的例子吗?我假设这个人真的想把字节转换回字符串-就像在
Encoding.GetString(byte[])
中那样,字节数组代表的可能是重复的?您希望如何将其转换为字符串?你能提供输入和输出的例子吗?我假设这个人真的想把字节转换回字符串-就像在Encoding.GetString(byte[])