22 lines
579 B
C#
22 lines
579 B
C#
![]() |
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|