【问题标题】:Serializing data types for use over a network in F#序列化数据类型以在 F# 中通过网络使用
【发布时间】:2010-06-27 10:16:37
【问题描述】:

我想通过网络发送一个 Uint16。我查看了可用的不同 .NET 序列化程序。根据F# Serialize Discriminated Union why so many bytes?,使用 BinaryFormatter 将生成表示该类型元数据的开销字节。这样做的结果是 UInt16,一旦通过该格式化程序,可能不会表示为 16 位。我需要一种转换 UInt16 的方法,以便从中获取 16 位,然后将其发送到套接字另一端的程序。

【问题讨论】:

    标签: serialization f#


    【解决方案1】:

    我认为你可以使用System.BitConverter类:

    static member GetBytes : 
            value:uint16 -> byte[] 
    

    http://msdn.microsoft.com/en-us/library/8wwsdz3k.aspx

    【讨论】:

    • 还要注意主机的字节顺序。假设它在 PowerPC 芯片或用于 Xbox 360 的 Compact Framework 上运行 Mono……您可能需要处理这些问题。 Novell 推出了自己的转换器:mono-project.com/Mono_DataConvert
    【解决方案2】:

    我刚刚找到了 BitConverter 类,它看起来像我想要的那样:

    byte_array = BitConverter.GetBytes header.id
    

    header.id 是 UInt16

    【讨论】:

    • 是的,我就是这么说的!
    • 是的 - 当我回答我的问题时没有看到你的帖子。至少我们同意。
    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2011-08-29
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多