在 .NET 中将结构转换为字节数组

发布于 2024-08-02 06:42:10 字数 752 浏览 4 评论 0原文

我希望使用 My.Computer.FileSystem.WriteAllBytes 等将由固定长度字符串组成的结构写入文件。

我正在使用带有固定长度字符串的 VB6 项目,我已将其转换为 VB.Net。

    Structure Record
        <VBFixedString(22),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=22)> Public tim() As Char
        <VBFixedString(130),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=130)> Public des() As Char
        <VBFixedString(2),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=2)> Public crlf() As Char
    End Structure

对于 C# 中的编组仍然是新手,但我如何将此结构获取到字节数组以写入文件。是否有一些编组技巧或者我必须编写自定义方法?

I wish to write a structure made up of fixed length strings to a file using My.Computer.FileSystem.WriteAllBytes or the like.

I am using a VB6 project with fixed length strings that I have converted in to VB.Net.

    Structure Record
        <VBFixedString(22),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=22)> Public tim() As Char
        <VBFixedString(130),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=130)> Public des() As Char
        <VBFixedString(2),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=2)> Public crlf() As Char
    End Structure

Still new to marshalling in C#, but how would I get this structure to an array of bytes to write to a file. Is there some marshalling trick or am I going to have to write a custom method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴梦长久 2024-08-09 06:42:10

使用 .NET 框架提供的序列化机制:

Dim formatter As New BinaryFormatter
formatter.Serialize(outputFileStream, objectInstance)

您应该向您的类型添加 属性。

Use serialization mechanisms provided by the .NET framework:

Dim formatter As New BinaryFormatter
formatter.Serialize(outputFileStream, objectInstance)

You should add <Serializable()> attribute to your type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文