2014-03-27 3 views
1

이진 리더를 사용하여 들어오는 이진 데이터의 바이트를 들여다보고 싶습니다. PeekChar를 사용하면 UTF-8 인 경우에만 제대로 작동합니다. 그렇지 않으면 "출력 문자 버퍼가 너무 작아 인코딩 된 유니 코드 (UTF-8) '대체 문자'를 포함 할 수 없습니다.C#의 이진 리더 peek 바이트

인코딩과 관계없이 이진 리더가 1 바이트를 들여다 볼 수있는 방법이 있습니까?

Stream stream = new MemoryStream(buffer); 
BinaryReader reader = new BinaryReader(stream); 
type = (uint)reader.PeekChar(); // Throws error I mentioned for a particular case 
+1

데이터 텍스트입니까? UTF8은 멀티 바이트 문자를 가질 수 있습니다. 다음 문자 나 다음 바이트를 찾고 있습니까? –

+0

@ScottChamberlain 아니요. 이진 데이터입니다. 나는 다음 바이트를 찾고있다. –

답변

1

BinaryReader 그만큼 간단한 단일 바이트를 엿볼 수 없다. 그러나, 귀하의 경우, 그것은 정말로 중요하지 않습니다. MemoryStream의 주소는 BinaryReader이므로 안전하게 ReadByte을 수행하고 Position을 1 바이트 뒤로 이동하면됩니다.

+0

메모리 스트림에 대한 픽 메서드를 찾고있었습니다. 나는 위치를 바꿀 수 있다는 것을 몰랐다. 감사. –