summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Utilities/AstarChecksum.cs
blob: b4925422046b5bfb505638147eaaa54b344aaeb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 Fowler–Noll–Vo hash function
			const int prime = 16777619;

			hash ^= 2166136261U;

			for (int i = 0; i < arr.Length; i++)
				hash = (hash ^ arr[i]) * prime;

			return hash;
		}
	}
}