murmur3.go 800 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package murmur3
  2. // Murmur3 .
  3. type Murmur3 struct {
  4. seed uint32
  5. }
  6. // New .
  7. func New() *Murmur3 {
  8. return NewWithSeed(0)
  9. }
  10. // NewWithSeed .
  11. func NewWithSeed(s uint32) *Murmur3 {
  12. return &Murmur3{
  13. seed: s,
  14. }
  15. }
  16. // Murmur3_32 .
  17. func (h *Murmur3) Murmur3_32(b []byte) []byte {
  18. return murmur3_32(h.seed, b)
  19. }
  20. // Murmur3_64 .
  21. func (h *Murmur3) Murmur3_64(b []byte) []byte {
  22. return murmur3_64(h.seed, b)
  23. }
  24. // Murmur3_128 little endian []byte.
  25. func (h *Murmur3) Murmur3_128(b []byte) []byte {
  26. h1, h2 := murmur3_128(h.seed, b)
  27. return []byte{
  28. byte(h1), byte(h1 >> 8), byte(h1 >> 16), byte(h1 >> 24),
  29. byte(h1 >> 32), byte(h1 >> 40), byte(h1 >> 48), byte(h1 >> 56),
  30. byte(h2), byte(h2 >> 8), byte(h2 >> 16), byte(h2 >> 24),
  31. byte(h2 >> 32), byte(h2 >> 40), byte(h2 >> 48), byte(h2 >> 56),
  32. }
  33. }