Живые и Твёрдые Издательский Дом Коммерсантъ

Контрольная сумма

Согласно Википедии это некое числовое значение, рассчитанное по какому-либо набору данных путём применения определённого алгоритма. Алгоритм никакими директивными документами не определен и может быть совершенно произвольным. Ниже приведена одна из реализаций контрольной суммы. Функция getCheckSum вычисляет контрольную сумму строки, передаваемой в качестве параметра.

Идея проста: осуществляется проход по строке, от первого до последнего символа, во время которого десятичный код символа умножается на номер позиции в строке и суммируется с предидущим значением.

Функция getCheckSumFromFile является расширением функции getCheckSum и предназначена для вычисления контрольной суммы файла, имя (полный путь) которого передаётся в функцию в качестве параметра.

Function getCheckSum(string2crc)
	Dim pos, ch, lastpos
	getCheckSum = 0
	'' исключительно для "тупого" бэйсика
	'' вычисляющего значение Len(string2crc)
	'' в каждой итерации for ... next
	lastpos = Len(string2crc)
	'' пройдем по строке с первого символа до последнего
	For pos=1 To lastpos
		'' возьмем десятичный код символа
		ch = Asc( Mid(string2crc, pos, 1) )
		'' умножаем его на номер позиции в строке
		'' и суммируем с предидущим значением
		getCheckSum = getCheckSum + (ch * pos)
	Next
End Function

Function getCheckSumFromFile ( filename )
	Dim fso, tf, text
	getCheckSumFromFile = 0
	Set fso = CreateObject("Scripting.FileSystemObject")
	'' если файл существует
	If fso.FileExists(filename) Then
		'' откроем его
		Set tf = fso.OpenTextFile( filename )
		'' текст файла передаем для вычисления контрольной суммы
		getCheckSumFromFile = getCheckSum(tf.ReadAll)
		tf.Close
	End If
End Function
Рейтинг@Mail.ru Photo & Фото