我需要从字节数组中读取最后8个字节。现在我这样做:
last8 = data.Reverse().Take(8).Reverse();
有没有更好的方法呢?
答案 0 :(得分:7)
例如使用Array.Copy:
byte[] data = ...;
byte[] last8 = new byte[8];
Array.Copy(data, data.Length-8, last8, 0, 8);
答案 1 :(得分:4)
这个怎么样:
var last8 = data.Skip(data.Length - 8);
将保存两次反转数组的步骤。
答案 2 :(得分:1)
您还可以使用data.Skip(data.Count - 8)
(如果您的数据已经被枚举 - 例如Array
或List
)。
答案 3 :(得分:0)
C# 8 有一个新功能可能会帮助...
var myByteArray = new byte[] {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A };
byte[] last8 = mydata[^8..]; // => 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A
在上面,我们从“8 from the end”开始,然后走到最后。