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.
Click to show internal directories.
Click to hide internal directories.