高手请帮看看
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#