我有这三种结构,阵列构建铸造
typedef struct serial_header {
int zigbeeMsgType;
int seqNumber;
int commandIdentifier;
int dest;
int src;
}serial_header_t;
typedef struct serial_packet {
serial_header_t header;
int data[];
} serial_packet_t;
和最后一个是
typedef struct readAttributePacket
{
int u8SourceEndPointId;
int u8DestinationEndPointId;
int u16ClusterId;
int bDirectionIsServerToClient;
int u8NumberOfAttributesInRequest;
int bIsManufacturerSpecific;
int u16ManufacturerCode;
int pu16AttributeRequestList[];
}readAttributePacket_t;
我用这个代码困扰,我只是想投的数据[]数组驻留在serial_packet_t中放入readAttributePacket_t结构中。 我认为数据[]应该是
data[]={0x01,0x01,0x04,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01};
我需要将这些数据转换为readAttributePacket_t结构。但是这下面的代码显示错误。
void main()
{
int a[]= {0x32,0x00,0x31,0x69,0x69,0x00,0x00,0x01,0x01,0x04,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01};
int i;
readAttributePacket_t *p;
serial_packet_t *data;
data = (serial_packet_t*)&a;
for(i=0;i<20;i++){
printf(" %02x \n",a[i]);
}
p = (readAttributePacket_t *)&data->data;
printf("\nu8SourceEndPointId:%x \nu8DestinationEndPointId:%x \nu16ClusterId:%04x \nbDirectionIsServerToClient:%x \nu8NumberOfAttributesInRequest:%x \nbIsManufacturerSpecific:%x \nu16ManufacturerCode:%04x",p->u8SourceEndPointId,
p->u8DestinationEndPointId,
p->u16ClusterId,
p->bDirectionIsServerToClient,
p->u8NumberOfAttributesInRequest,
p->bIsManufacturerSpecific,
p->u16ManufacturerCode);
getch();
}
输出应该像
u8SourceEndPointId=01
u8DestinationEndPointId=01
u16ClusterId=0402
bDirectionIsServerToClient=00
u8NumberOfAttributesInRequest=02
bIsManufacturerSpecific=00
u16ManufacturerCode=0000
我怎么能得到pu16AttributeRequestList []数组readAttributePacket_t结构,应该喜欢,
pu16AttributeRequestList[0]=0000
pu16AttributeRequestList[1]=0001
什么样的价值观是它呈现,到底是什么? – 2012-07-13 12:09:44
u8SourceEndPointId = 0, u8DestinationEndPointId = 0, u16ClusterId = 0001, bDirectionIsServerToClient = 1, u8NumberOfAttributesInRequest = 4, bIsManufacturerSpecific = 2, u16ManufacturerCode = 0000其示出了这样 – 2012-07-13 12:22:28
你应该做的联合而不是与所述阵列和它的结构readAttributePacket。 – 2012-07-13 12:22:47