Сначала я прочитал данные из файла двоичной матрицы и записал в новый файл, я использую другую программу для их чтения в память.При записи в двоичный файл fromstream :: write пишет больше байтов, чем должно было
часть записи
#define BIT_NUM 8
using namespace std;
int main(int argc, char **argv) {
if (argc >= 2) {
char* filename = argv[1];
ifstream fin(filename);
ofstream fout("../../hashcode.dat", ios_base::trunc | ios_base::out | ios_base::binary);
char c;
bitset<BIT_NUM> temp;
int index = 0;
int count = 0;
while (fin.get(c)) {
if (c != '\n' && c != ',') {
temp.set(BIT_NUM - index - 1, c - '0');
index++;
}
if (index == BIT_NUM) {
unsigned char byte = static_cast<unsigned char>(temp.to_ulong());
fout.put(byte);
count++;
index = 0;
}
}
cout << count << "\n";
fin.close();
fout.close();
}
return 0;
}
выход: 14610144
прочитать часть
#define BIT_NUM 256
#define BYTE_NUM 32
using namespace std;
int main(int argc, char **argv) {
ifstream fin("../../hashcode.dat", ios_base::binary);
char buff[1];
int count = 0;
while(fin) {
fin.read(buff, 1);
count++;
/**/
}
cout << count << "\n";
return 0;
}
выход: 14610145
Я стараюсь дифф результаты и обнаружил, что дополнительные байты в хвост и тот же, что и последний байт. Интересно, почему процесс ввода-вывода сделает дополнительный байт, подобный этому. Когда я просматриваю свойство hashcode.dat выходного файла, его размер равен 14610144 байтам.
Это решает проблему, спасибо вам большое. –