Контрольная сумма файла
От: GoldSerg Россия http://denzerg.w6.ru
Дата: 09.09.04 18:05
Оценка:
Как посчитать CRC файла средствами MFC (или просто), но чтоб это было очень быстро.
Re: Контрольная сумма файла
От: aGrey Литва  
Дата: 09.09.04 18:46
Оценка:
Здравствуйте, GoldSerg, Вы писали:

GS>Как посчитать CRC файла средствами MFC (или просто), но чтоб это было очень быстро.


MapFileAndCheckSum() из imagehlp, в среднем 1 Гб за 1.5 мин.

Или так даже (Си)

DWORD dwCSum = 1;

for(DWORD n = 0; n < dwBufSize; n++)
{
    dwHBuf[n] = (DWORD)(dwCSum >> 29) + dwHBuf[n];
    dwHBuf[n] = (DWORD)(dwCSum >> 17) + dwHBuf[n];
    dwCSum    = (DWORD)(dwCSum <<  3) ^ dwHBuf[n];
}

Алгоритмов полно. Тут все зависит от того, какая требуется точность...
Re[2]: Контрольная сумма файла
От: GoldSerg Россия http://denzerg.w6.ru
Дата: 09.09.04 19:08
Оценка:
Здравствуйте, aGrey, Вы писали:

G>Здравствуйте, GoldSerg, Вы писали:


GS>>Как посчитать CRC файла средствами MFC (или просто), но чтоб это было очень быстро.


G>MapFileAndCheckSum() из imagehlp, в среднем 1 Гб за 1.5 мин.


G>Или так даже (Си)


G>
G>DWORD dwCSum = 1;

G>for(DWORD n = 0; n < dwBufSize; n++)
G>{
G>    dwHBuf[n] = (DWORD)(dwCSum >> 29) + dwHBuf[n];
G>    dwHBuf[n] = (DWORD)(dwCSum >> 17) + dwHBuf[n];
G>    dwCSum    = (DWORD)(dwCSum <<  3) ^ dwHBuf[n];
G>}
G>

G>Алгоритмов полно. Тут все зависит от того, какая требуется точность...

Суть такая, надо сравнить 2 папки и если будут файлы с одинаковым именем узнать тотже это файл или измененный, поэтому точность должна быть наплохой.
Re[3]: Контрольная сумма файла
От: aGrey Литва  
Дата: 09.09.04 19:43
Оценка:
Здравствуйте, GoldSerg, Вы писали:

GS>Суть такая, надо сравнить 2 папки и если будут файлы с одинаковым именем узнать тотже это файл или измененный, поэтому точность должна быть наплохой.


1. Почему имя, а не размер?
2. Неплохой — это какой? Чем выще точность, тем ниже скорость...

ИМХО для простого сравнения, если это не чертежи реактора , подойдет любой 32-битный CRC алгоритм.
Re[4]: Контрольная сумма файла
От: aGrey Литва  
Дата: 09.09.04 20:39
Оценка:
P.S. Adler-32 (в zlib можно найти) прекрасно подойдет — он достаточно быстрый и точный.
P.P.S. А вот таблица, по теме.
Re[3]: Контрольная сумма файла
От: butcher Россия http://bu7cher.blogspot.com
Дата: 10.09.04 13:53
Оценка: 1 (1) +1
Здравствуйте, GoldSerg, Вы писали:

GS>Суть такая, надо сравнить 2 папки и если будут файлы с одинаковым именем узнать тотже это файл или измененный, поэтому точность должна быть наплохой.

Думаете подсчёт контрольной суммы двух файлов будет быстрее побайтового сравнения? ИМХО, сравнить будет быстрее. Тем более что сравнение можно остановить как только будет найдена разница.

Нет ничего невозможного..
Re: Контрольная сумма файла
От: out  
Дата: 10.09.04 14:24
Оценка:
Здравствуйте, GoldSerg, Вы писали:

GS>Как посчитать CRC файла средствами MFC (или просто), но чтоб это было очень быстро.


Чисто средствами MFC никак....
Предлагаю вам считать MD5 файлам и сравнивать... одинаковый MD5 одинаковые файлы...
Re[2]: Контрольная сумма файла
От: rus blood Россия  
Дата: 10.09.04 14:51
Оценка:
Здравствуйте, out, Вы писали:

out>Чисто средствами MFC никак....

out>Предлагаю вам считать MD5 файлам и сравнивать... одинаковый MD5 одинаковые файлы...

Вопрос на засыпку.
Как проверить, что в буфере char szBuffer[10]; находится "пустая строка"?
Варианты ответов (выберите наиболее понравившийся)
1. 0 == strcmp(szBuffer, "")
2. 0 == strlen(szBuffer)
3. 0 == *szBuffer

................

Имею скафандр — готов путешествовать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.