【发布时间】:2011-06-04 09:49:29
【问题描述】:
我是网络编程新手,所以我有一个问题:在我的情况下,在 C++ 和 C# 之间发送整数(假设 16 位整数,因为 32 存在“字节序”问题)安全吗?如何做到这一点?
在我的程序中,我将 int 转换为 char(我知道它低于 255)并发送它。但是,我想发送 32 个 int。我尝试使用协议缓冲区进行此操作。我在 C++ 中使用了 WriteVarint32,在 C# 中使用了 ProtoReader.ReadUInt32,但没有成功(C# 中的例外)。我认为在阅读this 后它会起作用。
您会这么好心并建议我在 C++ 和 C# 应用程序之间发送整数的正确方法吗?如果您向我解释了如何使用协议缓冲区(C# 中的 protobuf-net)来做到这一点,我会非常高兴。
【问题讨论】:
-
那么为什么 16 位没有字节序问题而 32 位有问题呢? 16 位在 bigendian/littleendian 机器中会有所不同。我建议您决定一种方法(例如协议缓冲区)并尝试它,并询问您遇到的问题。
-
@David varint 编码围绕字节顺序工作(它是隐式的)
标签: c# c++ network-programming protocol-buffers protobuf-net