example_test.go 1.0 KB

12345678910111213141516171819202122232425262728
  1. // Copyright 2015 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package crc32_test
  5. import (
  6. "fmt"
  7. "hash/crc32"
  8. )
  9. func ExampleMakeTable() {
  10. // In this package, the CRC polynomial is represented in reversed notation,
  11. // or LSB-first representation.
  12. //
  13. // LSB-first representation is a hexadecimal number with n bits, in which the
  14. // most significant bit represents the coefficient of x⁰ and the least significant
  15. // bit represents the coefficient of xⁿ⁻¹ (the coefficient for xⁿ is implicit).
  16. //
  17. // For example, CRC32-Q, as defined by the following polynomial,
  18. // x³²+ x³¹+ x²⁴+ x²²+ x¹⁶+ x¹⁴+ x⁸+ x⁷+ x⁵+ x³+ x¹+ x⁰
  19. // has the reversed notation 0b11010101100000101000001010000001, so the value
  20. // that should be passed to MakeTable is 0xD5828281.
  21. crc32q := crc32.MakeTable(0xD5828281)
  22. fmt.Printf("%08x\n", crc32.Checksum([]byte("Hello world"), crc32q))
  23. // Output:
  24. // 2964d064
  25. }