OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2238|回复: 8

数据结构问题

[复制链接]

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2594
金钱
2594
注册时间
2017-4-4
在线时间
342 小时
发表于 2017-10-14 01:04:32 | 显示全部楼层 |阅读模式
10金钱
对于以下两个typedef struct  类型,怎样处理可以使_color_factor中的 u8 redfactor;  u8 greenfactor; u8 bluefactor;  三个量,变换为数组类型,且分别对应与_rgb_lab中的u8 rgb[3];
请大神指教。


typedef struct  
{                                                                                    
        u16 color;                        //ÑÕé«
        u8 redfactor;                        //oìé«·Öá¿
        u8 greenfactor;    //Âìé«·Öá¿
        u8 bluefactor;      //à¶é«·Öá¿
        float cal_redfactor;        //1éò»»ˉ′|àíoóμÄoìé«·Öá¿
        float cal_greeenfactor;     //1éò»»ˉ′|àíoóμÄÂìé«·Öá¿
        float cal_bluefactor;       //1éò»»ˉ′|àíoóμÄà¶é«·Öá¿
       

        float hsi_h_factor;   //H·Öá¿
        float hsi_s_factor;   //S·Öá¿
        float hsi_i_factor;   //I·Öá¿
       
        float servo_angle;  //¶æ»ú½Ç¶è×a»»êyÖμ500-2500
        float camera_angle;  //éãÏñí·μĽǶè
       
}_color_factor;



typedef struct
{
  u8 rgb[3];
  float lab[3];  
}_rgb_lab;



最佳答案

查看完整内容[请看2#楼]

不能用数组,必须用指针。若用数组必须赋值。[mw_shl_code=applescript,true]{ u8 *p; _color_factor color_factor ; p = (u8 *)color_factor + 2; //现在p[0] p[1] p[2]就是你要的rgb的值 }[/mw_shl_code]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2017-10-14 01:04:33 | 显示全部楼层
不能用数组,必须用指针。若用数组必须赋值。[mw_shl_code=applescript,true]{
u8 *p;
_color_factor  color_factor ;
p = (u8 *)color_factor + 2;
//现在p[0] p[1] p[2]就是你要的rgb的值
}[/mw_shl_code]
我有故事,你有酒吗
回复

使用道具 举报

18

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2017-1-18
在线时间
180 小时
发表于 2017-10-14 08:47:41 | 显示全部楼层
你可以直接在_color_factor内将 redfactor;   greenfactor;  bluefactor定义为_rgb_lab类型的指针或者数组。_rgb_lab最好放在_color_factor的前面
回复

使用道具 举报

0

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2017-10-12
在线时间
83 小时
发表于 2017-10-14 09:01:16 | 显示全部楼层
不知道你的目的是什么,没描述清
回复

使用道具 举报

4

主题

133

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3863
金钱
3863
注册时间
2016-6-11
在线时间
710 小时
发表于 2017-10-14 09:38:14 | 显示全部楼层
用指针就好了。
回复

使用道具 举报

41

主题

242

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2016-1-11
在线时间
132 小时
发表于 2017-10-14 10:15:41 | 显示全部楼层
为啥要这样麻烦呢?直接用不就好了。感觉有点多余。
回复

使用道具 举报

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2594
金钱
2594
注册时间
2017-4-4
在线时间
342 小时
 楼主| 发表于 2017-10-14 12:46:19 | 显示全部楼层
沧海 发表于 2017-10-14 10:15
为啥要这样麻烦呢?直接用不就好了。感觉有点多余。

感觉有逼格,再者不想在将已将写好的东西修改了。
回复

使用道具 举报

3

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-5-4
在线时间
21 小时
发表于 2017-10-14 17:40:08 | 显示全部楼层
使用#pragma pack(1)让结构体按照一字节对齐,然后memcpy就可以了
回复

使用道具 举报

41

主题

242

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2016-1-11
在线时间
132 小时
发表于 2017-10-15 22:51:24 | 显示全部楼层
jinx 发表于 2017-10-14 12:46
感觉有逼格,再者不想在将已将写好的东西修改了。

替换就好,一键更改多简单。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 10:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表