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

问题描述 投票:0回答:4

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

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

有更好的方法吗?

c# reverse
4个回答
11
投票

使用 Array.Copy 例如:

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

5
投票

这个怎么样:

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

可以节省两次反转数组的步骤。


2
投票

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

1
投票

您还可以使用

data.Skip(data.Count - 8)
(如果您的数据已枚举 - 例如
Array
List
)。

© www.soinside.com 2019 - 2024. All rights reserved.