首页 新闻 搜索 专区 学院

c++类型向c#转化的问题

0
悬赏园豆:100 [待解决问题]

问题如下:有2个c++结构体:
typedef struct _AlarmStatus
{
 char deviceid[24];  // 报警设备编码
 char status[16];   // 报警设备状态:ONDUTY,OFFDUTY,ALARM
}AlarmStatus;


typedef struct _DeviceStatus
{
    int                 result;         // 查询结果标志:0成功,1失败
 char    online[8];  // 是否在线:ONLINE,OFFLINE
 char    status[32];  // 是否正常工作
 char    reason[256]; // 不正常工作原因
 char    encode[32];  // 是否编码
 char    record[32];  // 是否录像
 char    deviceTime[32]; // 设备时间和日期
 int                 num;      // 报警设备状态列表个数
 AlarmStatus* alarmStatus; // 报警设备状态列表
}DeviceStatus;

第一个转化为c#是

        public struct AlarmStatus
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
            public string deviceid;  // 报警设备编码
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
            public string status;   // 报警设备状态:ONDUTY,OFFDUTY,ALARM
        }
    
    那么第二个结构体的最后一句怎么转化?
    public struct DeviceStatus
        {
            public int result;         // 查询结果标志:0成功,1失败
           [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
            public string online;  // 是否在线:ONLINE,OFFLINE
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string status;  // 是否正常工作
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
            public string reason; // 不正常工作原因
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string encode;  // 是否编码
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string record;  // 是否录像
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string deviceTime; // 设备时间和日期
            public int num;      // 报警设备状态列表个数
           
            public  (_____________________________) // 报警设备状态列表  
        }
    括号里应该怎么写?求大神指教!
    

秋千笑里低低语的主页 秋千笑里低低语 | 初学一级 | 园豆:104
提问于:2015-01-28 11:56
< >
分享
所有回答(1)
1

IntPtr

Firen | 园豆:5483 (大侠五级) | 2015-01-28 12:17

AlarmStatus 40字节,所以整个DeviceStatus的大小为8+32+256+32+32+32+4+4*40 字节。

通过IntPtr获取到整个DeviceStatus字节数组后,自己做解析。

支持(0) 反对(0) Firen | 园豆:5483 (大侠五级) | 2015-01-28 21:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册