1. ----------------------------------------
  2. --
  3. ----------------------------------------
  4. on adler32 (str)
  5.   adler_base = 65521
  6.   low = 1
  7.   high = 0
  8.   len = length(str)
  9.   repeat with n = 1 to len
  10.     low = (low + chartonum(str.char[n])) mod adler_base
  11.     high = (high + low) mod adler_base
  12.   end repeat
  13.   crc = high * 65536 + low
  14.   return crc
  15. end
  16.  
  17.  
  18. ----------------------------------------
  19. --
  20. ----------------------------------------
  21. on adler32_hex (str)
  22.   adler_base = 65521
  23.   low = 1
  24.   high = 0
  25.   len = length(str)
  26.   repeat with n = 1 to len
  27.     low = (low + chartonum(str.char[n])) mod adler_base
  28.     high = (high + low) mod adler_base
  29.   end repeat
  30.   crc = dec2hex(high) & dec2hex(low)
  31.   return crc
  32. end
  33.  
  34. -- 0 < d < 65536, returns 4 bytes
  35. on dec2hex d
  36.   return rgb(0, d/256, d mod 256).hexString().char[4..7]
  37. end
[raw code]