将文件读取为C 的二进制数组

Reading a file into a binary array in c++

本文关键字:二进制 数组 文件 读取      更新时间:2023-10-16

我有一个文件,其中包含多个JPEG的数据(以及一些垃圾),我需要从此文件中提取二进制文件,过滤垃圾并创建JPEG。我知道jpegs的起始二进制顺序。

char buffer[30];
ifstream fin;
fin.open ("FILENAME.raw", ios::in | ios::binary);
while (!fin.eof())
{
    fin.read(buffer,30);
    cout<<buffer[2]<<endl;
}
fin.close();

在这里,我试图用二进制打印文件,但是当我运行此代码时,外星字符在屏幕上打印。

我认为问题是" cout&lt;&lt; buffer [2]",它正在将您的二进制信息转换为用户。尝试以前尝试int cast,您也应该使用静态的"未签名char阵列"因为二进制数据可以无符号。

unsigned char buffer[ 30 ];
ifstream fin;
fin.open ("FILENAME.raw", ios::in | ios::binary);
while (!fin.eof())
{
    fin.read( (char*)( &buffer[0] ), 30 ) ;
    cout << (int)buffer[2] << " ";
}
fin.close();
return 0;

另外,如果您想穿越二进制

您应该仔细检查文件的二进制内容,因为您的代码似乎很好。