2013-10-28 2 views
3

do...while 루프 중에 일부 데이터를 읽는 MemoryStream이 있는데, 읽은 마지막 5 바이트를 확인해야합니다.MemoryStream의 특정 바이트 그룹에 액세스하는 방법은 무엇입니까?

MemoryStream에서 읽은 마지막 5 바이트는 어떻게 액세스합니까?

+0

내가'Seek' 그냥 스트림의 위치를 ​​설정 생각을? 내가 묻고있는 것을하는 법을 안다면, 대답을 올리면 고맙겠습니다. – Kehlan

+0

읽은 마지막 5 바이트를 저장 하시겠습니까? 스트림되지 않습니다, 그건 당신의 직업 :) – nvoigt

답변

3

그냥 뒤에 5 바이트로 위치를 설정하고, 그 바이트 다시 읽어 :

byte[] GetLast5BytesRead(MemoryStream stream) 
{ 
    // TODO: Validation that stream.Position is at least 5 
    byte[] ret = new byte[5]; 
    stream.Position -= 5; 
    // TODO: Consider throwing an exception if this doesn't return 5 
    Stream.Read(ret, 0, 5); 
    return ret; 
} 
+0

그래, 그랬어. 내가 바꾸어야했던 유일한 것은'stream.Position - = 5;''stream.Position - = 6;' – Kehlan

+0

''stream.Seek (-5, SeekOrigin.Current)'를 코딩하면 더 좋지 않을까? 'stream.Position - = 5;'보다? – AgentFire

+0

나는 개인적으로 그 차이점을 보지 못했지만 그 이점을 설명 할 수 있다면 그것을 좋아할 것입니다. – Kehlan

관련 문제