从字节数组中获取最后一个字节

本文关键字:字节 获取 最后一个 数组 字节数 | 更新日期: 2023-09-27 18:26:19

我需要从字节数组中读取最后8个字节。现在我是这样做的:

last8 = data.Reverse().Take(8).Reverse();

有更好的方法吗?

从字节数组中获取最后一个字节

使用数组。复制例如:

byte[] data = ...;
byte[] last8 = new byte[8];
Array.Copy(data, data.Length-8, last8, 0, 8);

这个怎么样:

var last8 = data.Skip(data.Length - 8);

将省去反转数组两次的步骤。

C#8的Ranges可能会有所帮助。。。

var bytes = new byte[] { 1, 2, 3, 4, 5 };
byte[] last3 = bytes [^3..];  
// last3 contains { 3, 4, 5 }

示例。。。

           START      END          EXAMPLE         ALSO KNOWN AS
[^3..]  - 3rd back  - end         { 3, 4, 5 }        last 3
[3..]   - 3rd       - end         { 4, 5 }           skip 3
[3..^2] - 3rd       - 3rd back    { }              
[..^3]  - beginning - 4rd back    { 1, 2 }           skip last 3
[..3]   - beginning - 4rd         { 1, 2, 3 }        first 3
[..]    - beginning - end         { 1, 2, 3, 4, 5 }  all

您也可以使用data.Skip(data.Count - 8)(如果您的数据已经枚举,例如ArrayList)。