2012-03-02 180 views
2

我需要從字節數組中讀取最後8個字節。現在我這樣做是這樣的:從字節數組中獲取最後一個字節

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

有沒有更好的方式做到這一點?

+1

如果不是這樣,你可以使用'Array.Copy' – leppie 2012-03-02 09:30:42

+0

副本可能是使用,因爲反向操作可根據大小相當昂貴的最好方式;特別是如果數據很大的話。 – 2012-03-02 09:32:42

+1

你的意思是什麼更好?更快?更可讀? – zmbq 2012-03-02 09:35:41

回答

7

使用Array.Copy例如:

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

您也可以使用data.Skip(data.Count - 8)(如果您的數據已被枚舉 - 例如ArrayList)。

4

這個怎麼樣:

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

將節省扭轉數組兩次的步驟。

+0

跳過可能需要遍歷(幾乎)整個數組,直到達到所需的索引。如果penartur的評論是正確的,Reverse()。Take(8)應該只有超過8個項目。由於8是恆定的,陣列大小可能很大,所以後者似乎更可取。 – Timo 2015-03-04 12:18:12

相關問題