annotate paraspace/tools.py @ 68:b7432d6f7e93

adler32
author Thinker K.F. Li <thinker@codemud.net>
date Wed, 29 Jun 2011 19:56:24 +0800
parents
children ff6f869273b7
rev   line source
68
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1 base = 65521
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
2
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
3 def adler32(adler, buf, offset, sz):
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
4 sum1 = adler & 0xffff
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
5 sum2 = (adler >> 16) & 0xffff
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
6 for off in range(offset, offset + sz):
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
7 sum1 = (sum1 + ord(buf[off])) % base
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
8 sum2 = (sum2 + sum1) % base
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
9 pass
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
10 r = (sum2 << 16) | sum1
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
11 return r
b7432d6f7e93 adler32
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
12