2012-03-02 2 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

관련 문제