64,637
社区成员
发帖
与我相关
我的任务
分享
//有一个二进制文件,要求每隔50bits,删除后面的12bits。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fi,*fo;
char buf[31];
char obf[31];
int bn,n;
void filter() {//对buf中前n个字节中的位,每隔50bits,忽略12bits,结果放在obf中,且将bn设置为obf中的字节数。
char bit[249];
char obt[249];
char b8[33];
char b88[33];
int i,j;
char *e;
for (i=0;i<n;i++) {
_itoa(buf[i],b8,2);
sprintf(b88,"%032s",b8);
sprintf(bit+i*8,"%s",b88+24);
}
j=0;
for (i=0;i<n*8;i++) {
if (i%62<50) {
obt[j]=bit[i];
j++;
}
}
if (j%8) {
bn=(j/8+1)*8;
} else {
bn=j;
}
for (i=j;i<bn;i++) obt[i]='0';
obt[bn]=0;
bn=bn/8;
for (i=0;i<bn;i++) {
strncpy(b8,obt+i*8,8);b8[8]=0;
obf[i]=(char)strtol(b8,&e,2);
}
}
int main() {
fi=fopen("in.bin","rb");
if (NULL==fi) {
printf("Can not open file in.bin!\n");
return 1;
}
fo=fopen("out.bin","wb");
if (NULL==fo) {
fclose(fi);
printf("Can not open file out.bin!\n");
return 2;
}
while (1) {
n=fread(buf,1,31,fi);
if (0==n) break;
filter();
fwrite(obf,1,bn,fo);
}
fclose(fo);
fclose(fi);
return 0;
}
#include <stdio.h>
unsigned __int64 v;
int i;
int main() {
for (i=0;i<64;i++) {
v=1ui64<<i;
printf("1ui64<<%d==0x%016I64Xui64\n",i,v);
}
return 0;
}
//1ui64<<0==0x0000000000000001ui64
//1ui64<<1==0x0000000000000002ui64
//1ui64<<2==0x0000000000000004ui64
//1ui64<<3==0x0000000000000008ui64
//1ui64<<4==0x0000000000000010ui64
//1ui64<<5==0x0000000000000020ui64
//1ui64<<6==0x0000000000000040ui64
//1ui64<<7==0x0000000000000080ui64
//1ui64<<8==0x0000000000000100ui64
//1ui64<<9==0x0000000000000200ui64
//1ui64<<10==0x0000000000000400ui64
//1ui64<<11==0x0000000000000800ui64
//1ui64<<12==0x0000000000001000ui64
//1ui64<<13==0x0000000000002000ui64
//1ui64<<14==0x0000000000004000ui64
//1ui64<<15==0x0000000000008000ui64
//1ui64<<16==0x0000000000010000ui64
//1ui64<<17==0x0000000000020000ui64
//1ui64<<18==0x0000000000040000ui64
//1ui64<<19==0x0000000000080000ui64
//1ui64<<20==0x0000000000100000ui64
//1ui64<<21==0x0000000000200000ui64
//1ui64<<22==0x0000000000400000ui64
//1ui64<<23==0x0000000000800000ui64
//1ui64<<24==0x0000000001000000ui64
//1ui64<<25==0x0000000002000000ui64
//1ui64<<26==0x0000000004000000ui64
//1ui64<<27==0x0000000008000000ui64
//1ui64<<28==0x0000000010000000ui64
//1ui64<<29==0x0000000020000000ui64
//1ui64<<30==0x0000000040000000ui64
//1ui64<<31==0x0000000080000000ui64
//1ui64<<32==0x0000000100000000ui64
//1ui64<<33==0x0000000200000000ui64
//1ui64<<34==0x0000000400000000ui64
//1ui64<<35==0x0000000800000000ui64
//1ui64<<36==0x0000001000000000ui64
//1ui64<<37==0x0000002000000000ui64
//1ui64<<38==0x0000004000000000ui64
//1ui64<<39==0x0000008000000000ui64
//1ui64<<40==0x0000010000000000ui64
//1ui64<<41==0x0000020000000000ui64
//1ui64<<42==0x0000040000000000ui64
//1ui64<<43==0x0000080000000000ui64
//1ui64<<44==0x0000100000000000ui64
//1ui64<<45==0x0000200000000000ui64
//1ui64<<46==0x0000400000000000ui64
//1ui64<<47==0x0000800000000000ui64
//1ui64<<48==0x0001000000000000ui64
//1ui64<<49==0x0002000000000000ui64
//1ui64<<50==0x0004000000000000ui64
//1ui64<<51==0x0008000000000000ui64
//1ui64<<52==0x0010000000000000ui64
//1ui64<<53==0x0020000000000000ui64
//1ui64<<54==0x0040000000000000ui64
//1ui64<<55==0x0080000000000000ui64
//1ui64<<56==0x0100000000000000ui64
//1ui64<<57==0x0200000000000000ui64
//1ui64<<58==0x0400000000000000ui64
//1ui64<<59==0x0800000000000000ui64
//1ui64<<60==0x1000000000000000ui64
//1ui64<<61==0x2000000000000000ui64
//1ui64<<62==0x4000000000000000ui64
//1ui64<<63==0x8000000000000000ui64
//