Я пытаюсь прочитать некоторые данные protobuf из коллеги - он создал их в C ++ и установил кодировку в unicode, а режим передачи для protobuf является двоичным.
В python это работает отлично:
with open('test.out', 'rb') as f:
dfile = protoclass_pb2.DataFile()
dfile.ParseFromString(f.read())
print(dfile.MetaData.author)
точно так же, как талисман.
В C# однако я пытаюсь:
string filepath = "test.out"
FileStream fst = new FileStream(filepath,
DataFile data = DataFile.Parser.ParseDelimitedFrom(fst);
fst.Close();
и получаю исключение:
Google.Protobuf.InvalidProtocolBufferException: 'Protocol message contained a tag with an invalid wire type.'
Мне надоело как-то устанавливать кодировку для потока, но, насколько я могу судить, я могу установить только кодировку StreamReader
, но не Stream
.
Простое чтение содержимого файла в массив приводит к одинаковые на обоих языках.
Как я могу прочитать данные в C#?