当前位置:编程学习 > C#/ASP.NET >>

高手请帮看看

public struct RADARSITE1
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
            public char[] country;                      //国家名,文本格式输入
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
            public char[] province;                     //省名,文本格式输入
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
            public char[] station;                      //站名,文本格式输入
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
            public char[] stationnumber;                //区站号,文本格式输入
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
            public char[] radartype;                    //雷达型号,文本格式输入
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
            public char[] longitude;                   //天线所在经度,文本格式输入.书写格式例:E 115°32′12″
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
            public char[] latitude;      //天线所在纬度,文本格式输入.书写格式例:N 35°30′15″
            public Int32 longitudevalue;   //天线所在经度的数值,以毫秒为计数单位(十进制)
            //东经(E)为正,西经(W)为负  
            public Int32 lantitudevalue;   //天线所在纬度的数值,以毫秒为计数单位(十进制)
            //北纬(N)为正,南纬(S)为负
            public Int32 height;          //天线的海拔高度以毫米为计数单位
            public short Maxangle;       //测站四周地物阻挡的最大仰角(以秒为计数单位)
            public short Opangle;      //测站的最佳观测仰角(地物回波强度<10dbz,以秒为 计数单位)
            public short ,;      //磁控管频率(通过此频率可计算雷达波长)
        }
这个结构怎么会是172个字节呢?  short应该是2个字节啊,去掉height,Maxangle,Opangle,总长度为164,而height,Maxangle,Opangle单独计算又是6,怎么放在一起就变成172了呢,而不是164 + 6=170呢?
--------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- 你怎么知道是172的,我算了一下也是170
--------------------编程问答-------------------- up --------------------编程问答-------------------- Marshal.SizeOf(结构)长度是172啊?
单独算是170.很郁闷 --------------------编程问答-------------------- 在c++里,原结构如下(170字节):
struct RADARSITE {
char   country[30];// 国家名,文本格式输入
char   province[20];// 省名,文本格式输入
char   station[40];// 站名,文本格式输入
char   stationnumber[10];// 区站号,文本格式输入
char   radartype[20];// 雷达型号,文本格式输入
char   longitude[16];// 天线所在经度,文本格式输入.书写格式例:E 115°32′12″
char   latitude[16] ;// 天线所在纬度,文本格式输入.书写格式例:N 35°30′15″
long int  longitudevalue;//     天线所在经度的数值,以毫秒为计数单位(十进制)
// 东经(E)为正,西经(W)为负  
long int  lantitudevalue;// 天线所在纬度的数值,以毫秒为计数单位(十进制)
// 北纬(N)为正,南纬(S)为负
long int  height; // 天线的海拔高度以毫米为计数单位
short   Maxangle; // 测站四周地物阻挡的最大仰角(以秒为计数单位)
short   Opangle; // 测站的最佳观测仰角(地物回波强度<10dbz,以秒为 计数单位)
short   MangFreq; // 磁控管频率(通过此频率可计算雷达波长)
};

c#里把char 换为byte类型也不对,还是172. 高手请指点啊 --------------------编程问答-------------------- 自己摸索,知道原因了,结贴.谢谢回贴的朋友 --------------------编程问答-------------------- 有分吗?
末班车
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,