我正在尝试使用以下二进制配置读取二进制文件
00 00 00 1A 79 20 83 DB 44 ...
使用以下功能
static BitArray getBitArray(string filename)
{
FILE *fs = fopen(filename.data(),"r");
fseek (fs , 0 , SEEK_END);
unsigned long s = ftell (fs);
rewind (fs);
unsigned char *buffer = new unsigned char[s+1];
fread(buffer,1,s,fs);
BitArray bArray;
for(int i=0; i<s; i++)
bArray.add(buffer[i]);
delete[] buffer;
fclose(fs);
return bArray;
}
哪里BitArray
只是我自己的一点操纵类。问题是,对于我上面提到的bin文件,它只读取了前三个0,像这样
00 00 00
即使fseek
找到了正确的文件大小。
至于为什么我需要那个字符串 0,是因为00 00 00 1A
形成了一个 32 位整数,它恰好小到可以留下三个0x00
s。
我怀疑0x00
文件开头的 s 字符串被识别为EOF
,所以我尝试在文件前面填充一个 char ,但效果不佳。
这可能是什么原因造成的?