首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-01 
c++如何引用结构体中定义的数组中的元素?struct dc_msg {char imei[IMEI_LEN+1]char name[DTU_NAME+1]un

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]);
//直接打印就好,不需要拷贝转换什么的了!

热点排行