РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1233 of 1593 menu

Функция fnv.New64a

Функция fnv.New64a создает новый объект для вычисления хеш-суммы по алгоритму FNV-1a с разрядностью 64 бита. В отличие от алгоритма FNV-1, в FNV-1a операция XOR выполняется до умножения на простое число, что делает алгоритм более устойчивым к коллизиям. Функция возвращает интерфейс hash.Hash64, который реализует все методы стандартного интерфейса hash.Hash, а также метод Sum64 для получения хеша в виде uint64.

Синтаксис

func New64a() hash.Hash64

Функция не принимает параметров и возвращает новый объект хеширования, реализующий интерфейс hash.Hash64.

Пример

Давайте вычислим хеш для строки "abcde" с использованием алгоритма FNV-1a 64 бита:

package main import ( "fmt" "hash/fnv" ) func main() { h := fnv.New64a() h.Write([]byte("abcde")) res := h.Sum64() fmt.Println(res) }

Результат выполнения кода:

15817220661460363384

Пример

Давайте вычислим хеш для строки "12345" с помощью метода Sum, который возвращает срез байтов:

package main import ( "fmt" "hash/fnv" ) func main() { h := fnv.New64a() h.Write([]byte("12345")) res := h.Sum(nil) fmt.Printf("%x\n", res) }

Результат выполнения кода:

"f0bf98b2216c1d48"

Пример

Продемонстрируем возможность последовательной записи данных в хеш-объект:

package main import ( "fmt" "hash/fnv" ) func main() { h := fnv.New64a() h.Write([]byte("abc")) h.Write([]byte("de")) res := h.Sum64() fmt.Println(res) }

Результат выполнения кода:

15817220661460363384

Обратите внимание, что хеш для последовательной записи "abc" и "de" совпадает с хешем для строки "abcde", так как данные записываются в том же порядке.

Смотрите также

  • функцию fnv.New32,
    которая создает хеш FNV-1 32 бита
  • функцию fnv.New32a,
    которая создает хеш FNV-1a 32 бита
  • функцию fnv.New64,
    которая создает хеш FNV-1 64 бита
  • функцию fnv.New128,
    которая создает хеш FNV-1 128 бит
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить