#include <stdio.h>
#include <stdlib.h>
char* bitstream1(void *s,int len ,int begin, int end)//返回begin到end 位的值
{
char *t,*p;
int i,j,k=0;
p=(char *)s;
t=(char*)calloc(len*8+1,sizeof(char));
for(j=0;j<len;j++)
for(i=8*sizeof(char);i>0;i--,t[k++]=((p[j]>>i)&1)+'0');
puts(t);
*(t+end)=0;
return t+begin-1;
}
long bitstream(unsigned char *s,int len ,int begin, int end)//返回begin到end 位的值
{
int i,j,k=0;
long n=0;
if(end<begin || end-begin>sizeof(long)*8 || begin<=0 || end<=0 ||end>len<<3 || begin>len<<3)
{
puts("Wrong input");
return -1;
}
for(j=begin>>3;j<=end>>3;j++)
for(i=8*sizeof(char);i>0;i--)
if((j<<3)+8-i>=begin-1 && (j<<3)+8-i<=end-1)
{
n+=(s[j]>>(i-1)&1)<<(end-begin-k);
k++;
}
return n;
}