22 lines
579 B
C#
Raw Normal View History

2023-04-24 15:49:03 +02:00
using System;
namespace Pathfinding.Util {
/// <summary>Calculates checksums of byte arrays</summary>
public class Checksum {
/// <summary>
/// Calculate checksum for the byte array starting from a previous values.
/// Useful if data is split up between several byte arrays
/// </summary>
public static uint GetChecksum (byte[] arr, uint hash) {
// Sort of implements the FowlerNollVo hash function
const int prime = 16777619;
hash ^= 2166136261U;
for (int i = 0; i < arr.Length; i++)
hash = (hash ^ arr[i]) * prime;
return hash;
}
}
}