读书人

c++怎么引用结构体中定义的数组中的元

发布时间: 2013-10-01 12:15:56 作者: rapoo

c++如何引用结构体中定义的数组中的元素?
struct dc_msg {
char imei[IMEI_LEN+1];
char name[DTU_NAME+1];
unsigned char msg_type;
unsigned char reserved;
unsigned short msg_len;
unsigned char msg_body[MAX_MSG_LEN];
};
想调用 msg_body[MAX_MSG_LEN]中0-10,也就是前11个数组的元素,将他们的值从十进制转换成十六进制,将转换后的值付给新的a[11]。有些术语说的可能不够专业,新手,刚刚开始学习,请高手赐教!
[解决办法]
dc_msg x;
x.msg_body[0];
x.msg_body[1];....就这样引用
[解决办法]

引用:
Quote: 引用:

dc_msg x;
x.msg_body[0];
x.msg_body[1];....就这样引用

那能进行这样的赋值操作吗?
a[11]=
{x.msg_body[0],x.msg_body[0],x.msg_body[1],x.msg_body[2],x.msg_body[3],.........,x.msg_body[10]};
数组不可以直接这样赋值,可以使用memcpy函数来完成。
memcpy(x.msg_body ,a ,sizeof(a));
[解决办法]
引用:
星哥,那您说,我单步调试时msg_body[0]=235,实际我使用时想用它的十六进制的形式EB,我要进行进制转换吗,在memcpy前就转吗?怎么转呢?
多少进制只是一种表现形式,对于计算机来说数值是没有变化的,不需要转化
[解决办法]
建议使用二进制来,四位一取即可!
[解决办法]
引用:
星哥,那您说,我单步调试时msg_body[0]=235,实际我使用时想用它的十六进制的形式EB,我要进行进制转换吗,在memcpy前就转吗?怎么转呢?



printf("%x\n", msg_body[0]);
//直接打印就好,不需要拷贝转换什么的了!

读书人网 >C++

热点推荐