Hi

we have a buffer say char array.[1].so the size will be 1 byte.
Now our problem is say we have 8 bits data say 10110101.
now this must be assigned to array[0] variable as 1 byte.
bit manipulation is not happening.kindly help us in this regard
If possible post us a sample code for the same

here we are posting sample code for the same

decleration:
struct aaa {
unsigned char buff1:1;

unsigned char buff2:1;

unsigned char buff3:1;

unsigned char buff4:1;

unsigned char buff5:1;

unsigned char buff6:1;

unsigned char buff7:1;

unsigned char buff8:1;
}complete_buff;
                               complete_buff->buf1=(unsigned char)0x01;;
				complete_buff->buf2=(unsigned char)0X00;
				complete_buff->buff3=(unsigned char)0x01;
				complete_buff->buff4=(unsigned char)0x01;
				complete_buff->buff5=(unsigned char)0x00;
				complete_buff->buff6=(unsigned char)0x00;
				complete_buff->buff7=(unsigned char)0x00;
				complete_buff->buff8=(unsigned char)0x00;

                               char  array[0]=(complete_buff->buff1>>7)|                (complete_buff->buff2>>6)|(complete_buff->buff3>>5)|(complete_buff->buff4>>4)|(complete_buff->buff5>>3)|(complete_buff->buff6>>2)|(complete_buff->buff7>>1)|(complete_buff->buff8)

Get rid of the shifts, you don't need them since you are using a bit field and are assigning directly to the various bits. Then, change your current assignments:

complete_buff->buf1=(unsigned char)0x01;;
complete_buff->buf2=(unsigned char)0X00;
complete_buff->buff3=(unsigned char)0x01;
complete_buff->buff4=(unsigned char)0x01;
complete_buff->buff5=(unsigned char)0x00;
complete_buff->buff6=(unsigned char)0x00;
complete_buff->buff7=(unsigned char)0x00;
complete_buff->buff8=(unsigned char)0x00;

To this:

complete_buff.buf1=(unsigned char)0x01;;
complete_buff.buf2=(unsigned char)0X00;
complete_buff.buff3=(unsigned char)0x01;
complete_buff.buff4=(unsigned char)0x01;
complete_buff.buff5=(unsigned char)0x00;
complete_buff.buff6=(unsigned char)0x00;
complete_buff.buff7=(unsigned char)0x00;
complete_buff.buff8=(unsigned char)0x00;

You only use the "arrow" operator with pointers. Since you don't have a pointer, you use the "dot" operator.

Hi

we have a buffer say char array.[1].so the size will be 1 byte.

Why? An array is multiple bytes. 1 byte is a byte, not an array.

I have a fleet of cars -- it's a Ford.
I have a pride of lions -- his name is Leo
I have a pair of socks -- where's the other pair for my left foot.

Comments
jesus christ, it's a lion get in the car!!!
This article has been dead for over six months. Start a new discussion instead.