[问题]C# 结构体对齐:如何将变长byte数组对齐

[StructLayout(LayoutKind.Sequential,Pack=1)] 
struct Report_Read_Parameter 
{ 
    byte Confirmation; 
    byte ListID; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] 
    byte[] ParameterID; 
    byte Length; 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = ***)] // based on the Length 
    byte[] ParameterValue; 
    byte Status; 
}

问题来了,怎么根据结构体里的字段Length来确定byte数组ParameterValue 的长度?

如何实现动态对齐?

 

在网上查了一下,但凡是声明为ByValArray类型,就必须要跟上SizeConst,而且设置SizeConst=Length时,编译器会报错

"An object reference is required for the non-static field, method, or property 'NGK.BLL.Commands.Report.Report_Read_Parameter.Length'"

转载于:https://www.cnblogs.com/fengye87626/p/4173288.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值