【发布时间】:2008-09-23 21:13:55
【问题描述】:
System.IO.BinaryReader 以 little-endian 格式读取值。
我有一个 C# 应用程序连接到服务器端的专有网络库。正如人们所期望的那样,服务器端以网络字节顺序发送所有内容,但我发现在客户端处理这一点很尴尬,尤其是对于无符号值。
UInt32 length = (UInt32)IPAddress.NetworkToHostOrder(reader.ReadInt32());
是我想出的从流中获取正确无符号值的唯一方法,但这看起来既尴尬又丑陋,我还没有测试这是否会剪掉高阶值所以我必须做一些有趣的 BitConverter 的事情。
我是否缺少某种方法,而不是为整个事物编写一个包装器以避免每次读取时出现这些丑陋的转换?似乎读者应该有一个字节序选项来使这样的事情变得更简单,但我没有遇到任何事情。
【问题讨论】:
-
它现在无济于事,但我为 BinaryReder/Writer 创建了一个 connect ticket 以支持 Bigendian。去投票here。
-
当字节可以表示本机整数时,原始代码是否正常工作?
-
@Denise Skidmore - 是的,确实如此。请参阅 .net 源代码。
标签: c# .net networking