Этот заголовок файла не является допустимой последовательностью protobuf, и, следовательно, стандартные механизмы чтения в protobuf-net не будут ориентированы на его чтение - действительно, ProtoReader
не позволит себе попасть в состояние, чтобы прочитать это, так как это недействительно. Тем не мение! Чтобы прочитать 32-разрядное число с прямым порядком байтов, вы, вероятно, можете использовать:
int x, int y; // ignore
int value = ProtoReader.ReadLengthPrefix(stream, false, PrefixStyle.Fixed32,
out x, out y);
Предполагая, что кодированный поток использует стандартные соглашения protobuf, строка записывается как префикс длины varint, а затем в UTF-8, поэтому вы можете использовать:
int x, int y; // ignore
int length = ProtoReader.ReadLengthPrefix(stream, false, PrefixStyle.Base128,
out x, out y);
byte[] bytes = new byte[length];
int read, offset = 0;
while(length > 0 && (read = stream.Read(bytes, offset, length)) > 0) {
offset += read;
length = read;
}
if(length > 0) throw new EndOfStreamException();
string s = Encoding.UTF8.GetString(bytes);
Я, вероятно, могу упаковать их вам более удобно, если вы действительно хотите; они не выставлены в настоящее время, потому что это не protobuf ; p