Объясните код. Я понимаю, что он делает, в целом, но почему мы используем reverse, мне не понятно.
Код нацелен на проверку signature у изображения формата PNG.
#include "pch.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <iomanip>
using namespace std;
const long long unsigned png_sign = 0x89504E470D0A1A0A;
const unsigned sign_size = 8;
void reverse(char* start, char* end) {
while (start < end) {
swap(*start++, *end--);
}
}
bool sign_ch(ifstream& img) {
long unsigned long our_img;
img.read((char*)& our_img, sign_size);
reverse((char*)& our_img, (char*)& our_img + sign_size - 1);
if (our_img == png_sign) {
return true;
}
else {
return false;
}
}
int main()
{
int count_err = 0;
ifstream in("месторасположение", ios::binary);
bool idat_is = false;
if (sign_ch(in)) {
cout << "Signature is okay" << endl;
}
else {
cout << "Signature is NOT okay" << endl;
count_err = 1;
}
.................