How to avoid an excess byte when a structure contains a byte variable? (VB.NET)(当结构包含字节变量时,如何避免多余的字节?(VB.NET))
问题描述
VB.NET 4.5
我定义了一个只包含一个字节的结构。我需要获取要通过串口发送的字节数组。
问题是:
当我使用Marshal.AllocHGlobal
、Marshal.StructureToPtr
和Marshal.Copy
时,返回的字节数组为6字节。.NET为Variable1创建了2个字节,因此在Variable1和Variable2数据之间有多余的字节。
我可以通过使用LayoutKind.Explicit
并定义FieldOffsets来解决此问题。
现在,当我获取字节数时,varable1和varable2之间不再有多余的字节。
尽管这似乎是一种笨拙的方式。有没有更好的选择,让我不必手动设置FieldOffsets?这个结构很简单,但它们可能会变得复杂得多。
推荐答案
修复非常简单-只需添加标记LayoutKind.Sequential,Pack:=1
这篇关于当结构包含字节变量时,如何避免多余的字节?(VB.NET)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!