2010-06-27 62 views
2

我想通過網絡發送一個Uint16。我看了一下可用的不同.N​​ET序列化器。根據此F# Serialize Discriminated Union why so many bytes?使用BinaryFormatter將生成表示該類型的元數據的開銷字節。這樣做的結果是,一旦通過該格式化程序,UInt16可能不會被表示爲16位。我需要一種方法來轉換該UInt16,以便我可以從它發送16位,我可以發送到套接字另一端的程序。序列化數據類型以通過F#網絡使用

回答

3

我認爲你可以使用System.BitConverter類:

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

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

+0

也要小心主機的字節順序。假設它在PowerPC芯片上運行Mono,或者在Xbox 360上運行Compact Framework ...您可能需要注意這一點。 Novell推出了自己的轉換器:http://www.mono-project.com/Mono_DataConvert – Stringer 2010-06-27 13:30:11

0

我剛剛發現的BitConverter類,它看起來像我想要做什麼:

byte_array = BitConverter.GetBytes header.id 

那裏頭。 id是UInt16

+0

是的,這正是我所說的! – Stringer 2010-06-27 02:20:24

+0

是的 - 當我回答我的問題時沒有看到您的帖子。至少我們同意。 – sashang 2010-06-27 02:36:58