我需要從字節數組中讀取最後8個字節。現在我這樣做是這樣的:從字節數組中獲取最後一個字節
last8 = data.Reverse().Take(8).Reverse();
有沒有更好的方式做到這一點?
我需要從字節數組中讀取最後8個字節。現在我這樣做是這樣的:從字節數組中獲取最後一個字節
last8 = data.Reverse().Take(8).Reverse();
有沒有更好的方式做到這一點?
使用Array.Copy例如:
byte[] data = ...;
byte[] last8 = new byte[8];
Array.Copy(data, data.Length-8, last8, 0, 8);
您也可以使用data.Skip(data.Count - 8)
(如果您的數據已被枚舉 - 例如Array
或List
)。
這個怎麼樣:
var last8 = data.Skip(data.Length - 8);
將節省扭轉數組兩次的步驟。
跳過可能需要遍歷(幾乎)整個數組,直到達到所需的索引。如果penartur的評論是正確的,Reverse()。Take(8)應該只有超過8個項目。由於8是恆定的,陣列大小可能很大,所以後者似乎更可取。 – Timo 2015-03-04 12:18:12
如果不是這樣,你可以使用'Array.Copy' – leppie 2012-03-02 09:30:42
副本可能是使用,因爲反向操作可根據大小相當昂貴的最好方式;特別是如果數據很大的話。 – 2012-03-02 09:32:42
你的意思是什麼更好?更快?更可讀? – zmbq 2012-03-02 09:35:41