c++在二进制文件中提取bit

2025-04-29 04:09:01
推荐回答(1个)
回答1:

//唯一不懂的就是 二进制文件 应该是应用程序之类的
//可是看你的范例 又好像是“文本文件里面的数据是二进制整数”
//还是写前者吧,后者比较简单
#include
#include

using namespace std;

/*int main()
{
ifstream in("in.txt",ios::in | ios::binary);//ios::in表示是输入文件binary表示二进制文件
in.seekg(0,ios::end);//将文件指针放在文件末尾
int n=in.tellg();//此时文件指针偏移量就是文件长度
in.seekg(0,ios::beg);
//看你的意思是 “字节”的数组,C++里面char长度就是一个字节(两个十六进制位)
char buffer[n];//
in.get(buffer,n);
//就放到buffer里面了,接下来就看你的了
system("pause");
return 0;
} */

//就是一个文件,用记事本打开里面是0000000100000000101100011111111111110100000101100111111010101000
//这样??那就看下面

int main()
{
ifstream in("in.txt");
in.seekg(0,ios::end);//将文件指针放在文件末尾
int n=in.tellg();//此时文件指针偏移量就是文件长度
//每8个二进制位就是 一个字节
n/=8;
in.seekg(0,ios::beg);
char arr[n];
char tmp;
for(int i=0;i {
arr[i]='\0';//就是 arr[i]=0;
for(int j=7;j>=0;j--)
{
tmp=in.get();
tmp-='0';//此时 '0' -> 0 , '1' ->1
arr[i] |= (tmp< }
}
//处理完,输出试试
for(int i=0;i cout< cout< system("pause");
return 0;
}