package main import "encoding/binary" const ( // FNV-1a offset32 = uint32(2166136261) prime32 = uint32(16777619) ) func hashPacket(p PacketTruncated) uint32 { h := offset32 b := make([]byte, 12) binary.BigEndian.PutUint32(b[0:4], p.To) binary.BigEndian.PutUint32(b[4:8], p.From) binary.BigEndian.PutUint32(b[8:12], p.ID) for ; len(b) >= 4; b = b[4:] { h = (h ^ uint32(b[0])) * prime32 h = (h ^ uint32(b[1])) * prime32 h = (h ^ uint32(b[2])) * prime32 h = (h ^ uint32(b[3])) * prime32 } return h }