#include <stdio.h>
#include <stdlib.h>
//len个字节,返回begin到end 位的值
char* bitstream(void *s,int len ,int begin, int end)
{
char *t,*p;
int i,j,k=0;
p=(char *)s;
t=(char*)calloc(len*8+1,sizeof(char));//长度 (end-begin+1)
for(j=0;j <len;j++) //不必计算所有,只须计算end-begin个
for(i=8*sizeof(char);i>0;i--,t[k++]=((p[j]>>i)&1)+'0');
puts(t);
*(t+end)=0;
return t+begin-1;
}
int main(void)
{
unsigned char s[]="ABCD";
puts(bitstream(s,4,1,8));//4个字节,取其中第一到第八位
getchar();
return 0;
}