vb.net 结构体 byte数组相互转换

   2025-02-13 8430
核心提示:在VB.NET中,可以使用Marshal类的PtrToStructure方法来将字节数组转换为结构体,使用Marshal类的StructureToPtr方法将结构体转换

在VB.NET中,可以使用Marshal类的PtrToStructure方法来将字节数组转换为结构体,使用Marshal类的StructureToPtr方法将结构体转换为字节数组。

以下是一个示例代码:

Imports System.Runtime.InteropServicesStructure MyStruct    Public Field1 As Integer    Public Field2 As Double    ' 定义其他字段...End StructurePublic Class Program    Public Shared Sub Main()        ' 创建结构体实例        Dim myStruct As New MyStruct()        myStruct.Field1 = 10        myStruct.Field2 = 3.14        ' 将结构体转换为字节数组        Dim size As Integer = Marshal.SizeOf(myStruct)        Dim buffer(size - 1) As Byte        Dim ptr As IntPtr = Marshal.AllocHGlobal(size)        Marshal.StructureToPtr(myStruct, ptr, False)        Marshal.Copy(ptr, buffer, 0, size)        Marshal.FreeHGlobal(ptr)        ' 将字节数组转换为结构体        Dim myStruct2 As MyStruct = New MyStruct()        Dim ptr2 As IntPtr = Marshal.AllocHGlobal(size)        Marshal.Copy(buffer, 0, ptr2, size)        myStruct2 = DirectCast(Marshal.PtrToStructure(ptr2, GetType(MyStruct)), MyStruct)        Marshal.FreeHGlobal(ptr2)        ' 输出结果        Console.WriteLine($"Field1: {myStruct2.Field1}")        Console.WriteLine($"Field2: {myStruct2.Field2}")    End SubEnd Class

这个示例中,首先创建了一个包含两个字段的结构体MyStruct。然后,将结构体实例转换为字节数组,再将字节数组转换为结构体实例,并输出结果。

请注意,这里使用的Marshal类来进行字节数组和结构体之间的转换。另外,需要引入命名空间System.Runtime.InteropServices。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言