【发布时间】:2011-12-07 08:28:31
【问题描述】:
这似乎是一个基本问题,但我有疑问可能是因为我使用 2 个不同的库来写入和读取数据。我的 Write 程序是用 C++ 编写的,它使用 google 的协议缓冲区库。我的阅读器是用 .NET c# 实现的。
在写程序中,我写了一个文件头如下。
coded_output->WriteLittleEndian32(BIN_START_MAGIC_NUMBER);
coded_output->WriteLittleEndian32(major_version);
coded_output->WriteLittleEndian32(minor_version);
coded_output->WriteVarint32(strlen(_region));
coded_output->WriteRaw(_region, strlen(_region));
coded_output->WriteLittleEndian32(_offset);
C#中读取上述字段的对应函数是什么?我了解如何读取协议缓冲区消息,但不确定如何读取上述数据。
问候, 阿洛克
【问题讨论】:
-
分配文件你也写这些到文件流,而不是使用msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx你可以指定要读取的内容,例如WriteLittleEndian32是32位
-
@nikolaMM94 同时读取 4 个字节非常简单(尽管 即使 实际上并不像调用 Read 传递 count = 4 那样简单),字符串明显更棘手,因为你还需要处理 varint 编码。
-
我支持我将能够读取 Little endian 32 位整数。 Varint32 整数呢?我想这将是编码的,并且无法直接由 FileStream 读取。 C#中是否有对应的读取函数?
-
@Marc,正是我关于字符串的问题。您能建议我在哪里可以找到这方面的文档吗?
-
@Marc,现在查看您的回复。
标签: c# c++ serialization protocol-buffers