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

Функция crc32.New

Функция crc32.New создает новый хеш для вычисления контрольной суммы CRC-32. В отличие от crc32.NewIEEE, эта функция принимает в качестве аргумента таблицу полинома, что позволяет использовать различные варианты CRC-32. Если передать nil, будет использована стандартная таблица IEEE. Функция возвращает интерфейс hash.Hash32, который реализует методы Write для добавления данных и Sum32 для получения 32-битной контрольной суммы.

Синтаксис

crc32.New(tab *crc32.Table) hash.Hash32

Пример с таблицей IEEE

Давайте создадим хеш со стандартной таблицей IEEE и вычислим контрольную сумму для строки "abcde":

package main import ( "fmt" "hash/crc32" ) func main() { // Create a new CRC-32 hash with IEEE table h := crc32.New(crc32.IEEETable) // Write data to the hash h.Write([]byte("abcde")) // Get the checksum res := h.Sum32() fmt.Println(res) }

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

1585201610

Пример с таблицей Castagnoli

Давайте создадим хеш с таблицей Castagnoli и вычислим контрольную сумму для строки "abcde":

package main import ( "fmt" "hash/crc32" ) func main() { // Create a new CRC-32 hash with Castagnoli table h := crc32.New(crc32.MakeTable(crc32.Castagnoli)) // Write data to the hash h.Write([]byte("abcde")) // Get the checksum res := h.Sum32() fmt.Println(res) }

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

4006049583

Пример с nil таблицей

Давайте передадим nil в качестве аргумента и убедимся, что будет использована таблица IEEE:

package main import ( "fmt" "hash/crc32" ) func main() { // Create a new CRC-32 hash with nil (will use IEEE table) h := crc32.New(nil) // Write data to the hash h.Write([]byte("abcde")) // Get the checksum res := h.Sum32() fmt.Println(res) }

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

1585201610

Пример пошагового обновления

Давайте добавим данные частями и получим итоговую контрольную сумму:

package main import ( "fmt" "hash/crc32" ) func main() { // Create a new CRC-32 hash h := crc32.New(crc32.IEEETable) // Write data in parts h.Write([]byte("ab")) h.Write([]byte("cd")) h.Write([]byte("e")) // Get the final checksum res := h.Sum32() fmt.Println(res) }

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

1585201610

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

  • функцию crc32.Checksum,
    которая вычисляет контрольную сумму CRC-32 для слайса байт
  • функцию crc32.ChecksumIEEE,
    которая вычисляет контрольную сумму CRC-32 IEEE для слайса байт
  • функцию crc32.NewIEEE,
    которая создает хеш CRC-32 IEEE без указания таблицы
  • функцию hash.Hash32,
    которая описывает интерфейс для 32-битных хеш-функций
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить