导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→昏头了,请DX帮忙。。。。[cjy0312]

 *第17861篇: 昏头了,请DX帮忙。。。。

  
楼 主:cjy0312 2003年12月4日11:06
 昏头了,请DX帮忙。。。。
有一个数组a[1]....1[8]要分别取出他的bit组成一个新的byte
eg:取出数组的bit0位组成一个byte_0即(
byte_0.7=a[8].0,byte_0.6=a[7].0,byte_0.5=a[6].0,byte_0.4=a[5].0
byte_0.3=a[4].0,byte_0.2=a[3].0,byte_0.1=a[2].0,byte_0.4=a[1].0
}
以此类推:
{
byte_x.7=a[8].x,byte_x.6=a[7].x,byte_x.5=a[6].x,byte_x.4=a[5].x
byte_x.3=a[4].x,byte_x.2=a[3].x,byte_x.1=a[2].x,byte_x.4=a[1].x
},该怎么做最简单?
  
2楼:lushch 2003年12月4日15:26
 参阅我的,不对处请指教

union
参阅我的,不对处请指教

union tt
{
unsigned char byte ;

struct {
  unsigned char byte_0 :1 ;
  unsigned char byte_1 :1 ;
  unsigned char byte_2 :1 ;
  unsigned char byte_3 :1 ;
  unsigned char byte_4 :1 ;
  unsigned char byte_5 :1 ;
  unsigned char byte_6 :1 ;
  unsigned char byte_7 :1 ;
  } 
  temp_bit;
 
  } data temp;

unsigned char result ( unsigned char p[], unsigned char i )
{
 
 temp.temp_bit.byte_0 = (p[0]&i)>  0?1:0 ;
 temp.temp_bit.byte_1 = (p[1]&i)>  0?1:0 ;
 temp.temp_bit.byte_2 = (p[2]&i)>  0?1:0 ;
 temp.temp_bit.byte_3 = (p[3]&i)>  0?1:0 ;
 temp.temp_bit.byte_4 = (p[4]&i)>  0?1:0 ;
 temp.temp_bit.byte_5 = (p[5]&i)>  0?1:0 ;
 temp.temp_bit.byte_6 = (p[6]&i)>  0?1:0 ;
 temp.temp_bit.byte_7 = (p[7]&i)>  0?1:0 ;

 return temp.byte ; 
}


>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:小弟急需下载电缆一用,不知哪位兄弟有,借或买都可以的,我在深圳南山

[下一篇主题]:51中C语法逻辑问题,大侠快来解惑