110,536
社区成员
发帖
与我相关
我的任务
分享
typedef struct tagSta_Record
{
//char time_stamp[23];
float av_speed[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
uint8 vloume[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
float occuancy[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//float headway[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//float _85_speed[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//BYTE is_offline[][][];
}STA_RECORD;
static void Main(string[] args)
{
//这是接收到的数据源
string str = "CA CB CC CD 01 82 60 03 00 00 00 00 00 00 80 3F 00 00 00 40 00 00 80 3F 00 00 00 40 00 00 40 40 00 00 00 40 00 00 40 40 00 00 80 40 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 80 3F 00 00 00 40 00 00 40 40 00 00 00 40 00 00 40 40 00 00 80 40 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 00 41 00 00 10 41 00 00 20 41 00 00 00 40 00 00 40 40 00 00 80 40 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 00 41 00 00 10 41 00 00 20 41 00 00 10 41 00 00 20 41 00 00 30 41 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 00 41 00 00 10 41 00 00 20 41 00 00 10 41 00 00 20 41 00 00 30 41 00 00 20 41 00 00 30 41 00 00 40 41 00 01 02 01 02 03 02 03 04 03 04 05 04 05 06 05 06 07 06 07 08 07 08 09 01 02 03 02 03 04 03 04 05 04 05 06 05 06 07 06 07 08 07 08 09 08 09 0A 02 03 04 03 04 05 04 05 06 05 06 07 06 07 08 07 08 09 08 09 0A 09 0A 0B 03 04 05 04 05 06 05 06 07 06 07 08 07 08 09 08 09 0A 09 0A 0B 0A 0B 0C 00 00 00 00 00 00 80 3F 00 00 00 40 00 00 80 3F 00 00 00 40 00 00 40 40 00 00 00 40 00 00 40 40 00 00 80 40 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 80 3F 00 00 00 40 00 00 40 40 00 00 00 40 00 00 40 40 00 00 80 40 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 00 41 00 00 10 41 00 00 20 41 00 00 00 40 00 00 40 40 00 00 80 40 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 00 41 00 00 10 41 00 00 20 41 00 00 10 41 00 00 20 41 00 00 30 41 00 00 40 40 00 00 80 40 00 00 A0 40 00 00 80 40 00 00 A0 40 00 00 C0 40 00 00 A0 40 00 00 C0 40 00 00 E0 40 00 00 C0 40 00 00 E0 40 00 00 00 41 00 00 E0 40 00 00 00 41 00 00 10 41 00 00 00 41 00 00 10 41 00 00 20 41 00 00 10 41 00 00 20 41 00 00 30 41 00 00 20 41 00 00 30 41 00 00 40 41 00 00";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(str);
StructDemo StructDemo1 = (StructDemo)ByteToStruct(bytes, typeof(StructDemo));
}
//将Byte转换为结构体类型
public static object ByteToStruct(byte[] bytes, Type type)
{
int size = Marshal.SizeOf(type);
if (size > bytes.Length)
{
return null;
}
//分配结构体内存空间
IntPtr structPtr = Marshal.AllocHGlobal(size);
//将byte数组拷贝到分配好的内存空间
Marshal.Copy(bytes, 0, structPtr, size);
//将内存空间转换为目标结构体
object obj = Marshal.PtrToStructure(structPtr, type);
//释放内存空间
Marshal.FreeHGlobal(structPtr);
return obj;
}
public struct StructDemo
{
//[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM] new int[] { 1, 3, 5 }, new int[] { 2 }, new int[] { 4, 8 }
//char time_stamp[23];
float[, ,] av_speeddata;
uint[, ,] vloume;
float[, ,] occuancy;
// float[, ,] av_speeddata = new float[4, 8, 2];
//uint vloume[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//float occuancy[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//float headway[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//float _85_speed[ARS_MAX_MEASURELINE_NUM][ARS_MAX_LANE_NUM][ARS_MAX_VEHICLETYPE_NUM];
//BYTE is_offline[][][];
public StructDemo (float[, ,] _av_speeddata, uint[, ,] _vloume, float[, ,] _occuancy)
{
this.av_speeddata = _av_speeddata;
this.vloume = _vloume;
this.occuancy = _occuancy;
}
}