前段时间,我做了一些F#编程,下面的代码用于序列化/反序列化float32数组:
#light
open System
open System.IO
open System.Runtime.Serialization
open System.Text
let write(x : float32[]) =
let ds = new DataContractSerializer(typeof<float32[]>)
let ms = new MemoryStream()
ds.WriteObject(ms, x)
ms.ToArray()
let read(x : byte[]) =
let ds = new DataContractSerializer(typeof<float32[]>)
let ms = new MemoryStream(x)
ds.ReadObject(ms) :?> float32[]
let x = [|1.0f; 2.0f; 3.0f|]
let xb = write(x)
let y = read(xb)
printfn "x = %A" x
printfn "y = %A" x
printfn "Done"
但是,现在,我必须在VB.NET中进行一些编程,以再次序列化/反序列化float32数组。由于F#编程不适合GUI,但GUI是我当前编程所必需的。 我想知道如何在VB.NET中重写上面的代码。 例如,我有一个float32数组(我不知道VB.NET中的数据类型与F#中的float32数组相同)(1.0,2.0,3.0);我想使用DataContractSerializer序列化它,然后读回来,所以我仍然可以得到相同的float32数组。 请分享您的代码。 感谢,并有一个愉快的一天! 约翰
答案 0 :(得分:0)
或多或少这个
Public Function write(x As [Single]()) As Byte()
Dim ds = New DataContractSerializer(GetType([Single]()))
Dim ms As New MemoryStream()
ds.WriteObject(ms, x)
Return ms.ToArray()
End Function
Public Function read(x As Byte()) As [Single]()
Dim ds As New DataContractSerializer(GetType(Singlet32()))
Dim ms As New MemoryStream(x)
Return DirectCast(ds.ReadObject(ms), [Single]())
End Function
我想你可以从这里拿走它吗?