adler32

package
v2.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2017 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Example
package main

import (
	"fmt"
	"hash/adler32"
	"log"

	rollsum "github.com/chmduquesne/rollinghash/adler32"
)

var data = "The quick brown fox jumps over the lazy dog"

func main() {
	s := []byte(data)

	vanilla := adler32.New()
	rolling := rollsum.New()

	// arbitrary window len
	n := 16

	// Load the window into the rolling hash
	rolling.Write(s[:n])

	// Roll it and compare the result with full re-calculus every time
	for i := n; i < len(s); i++ {

		vanilla.Reset()
		vanilla.Write(s[i-n+1 : i+1])

		rolling.Roll(s[i])

		fmt.Printf("%v: checksum %x\n", string(s[i-n+1:i+1]), rolling.Sum32())

		if vanilla.Sum32() != rolling.Sum32() {
			log.Fatalf("%v: expected %x, got %x",
				s[i-n+1:i+1], vanilla.Sum32(), rolling.Sum32())
		}
	}

}
Output:

he quick brown f: checksum 31e905d9
e quick brown fo: checksum 314805e0
 quick brown fox: checksum 30ea05f3
quick brown fox : checksum 34dc05f3
uick brown fox j: checksum 33b705ec
ick brown fox ju: checksum 325205ec
ck brown fox jum: checksum 31b105f0
k brown fox jump: checksum 317d05fd
 brown fox jumps: checksum 30d10605
brown fox jumps : checksum 34d50605
rown fox jumps o: checksum 34c60612
own fox jumps ov: checksum 33bb0616
wn fox jumps ove: checksum 32d6060c
n fox jumps over: checksum 316c0607
 fox jumps over : checksum 304405b9
fox jumps over t: checksum 3450060d
ox jumps over th: checksum 33fe060f
x jumps over the: checksum 33120605
 jumps over the : checksum 313e05ad
jumps over the l: checksum 353605f9
umps over the la: checksum 348505f0
mps over the laz: checksum 332905f5
ps over the lazy: checksum 32590601
s over the lazy : checksum 310905b1
 over the lazy d: checksum 2f7a05a2
over the lazy do: checksum 336a05f1
ver the lazy dog: checksum 326205e9

Index

Examples

Constants

View Source
const Size = 4

Variables

This section is empty.

Functions

func New

func New() rollinghash.Hash32

New returns a new rollinghash.Hash32 computing the rolling Adler-32 checksum. The window is copied from the last Write(). This window is only used to determine which is the oldest element (leaving the window). The calls to Roll() do not recompute the whole checksum.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL