我正在创建三个结构:
struct ethernet {
uint16_t dest_mac;
};
struct ip {
uint16_t src_ip;
uint16_t dest_ip;
};
struct udp {
uint16_t porten I
};
然后我创建了结构实例,然后在char缓冲区中复制。
memcpy(buffer , eth , sizeof(struct ethernet));
memcpy(buffer + sizeof(struct ethernet) , ipe , sizeof(struct ip));
memcpy((buffer + sizeof(struct ethernet) + sizeof(struct ip)) , udpe , sizeof(struct udp));
现在我定义另一个结构:
struct pattern {
uint64_t pttn;
};
现在我将上面定义的char缓冲区指向的内存类型转换为struct pattern。
struct pattern *pat = NULL;
pat = (struct pattern *)buffer;
当我进行此操作时,pat-> pttn的值未按预期进行。
示例:
当我传递值时:dest_mac = 1,src_ip = 2,dest_ip = 3,port = 4. pat-> pttn的值为131073。据我说,应该来的价值是:281483566841860
答案 0 :(得分:0)
64位[无符号]整数的值,由4个相邻的16位整数组成,取决于系统架构,并取决于"字节序"的架构。