2012-03-02 14 views
2

バイト配列から最後の8バイトを読み取る必要があります。今すぐこのようにしています:バイト配列から最後のバイトを取得

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

これを実行する方法はありますか?

+1

こと、またはあなたがArray.Copy' – leppie

+0

ザ・コピーはおそらく逆の操作はサイズによっては、非常にコストがかかることがあるため、使用するための最良の方法である '使用することができます。特にデータが大きい場合は特にそうです。 –

+1

あなたはどういう意味がありますか?もっと早く?より読みやすい? – zmbq

答えて

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)(データが既に列挙されている場合、たとえばArrayまたはList)を使用することもできます。これについて

4

何:

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

は二回配列を逆転させるステップを救います。

+0

Skipは、配列全体が目的のインデックスに到達するまで(ほとんど)移動する必要があります。 penarturのコメントが正しければ、Reverse()。Take(8)は8つ以上の項目を対象とします。 8が一定であり、配列のサイズが大きくなる可能性があるので、後者が好ましいと思われる。 – Timo

関連する問題