Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Alex Naumoff                         2:5025/17      09 Dec 2002  20:50:56
 To : All
 Subject : Re: Adler-32
 -------------------------------------------------------------------------------- 
 
 
 > From: "Dmitriy Shestakov" <dmitriy@aamsystems.ru>
 > 
 > Hi!
 > 
 > с ЛФП ЪОБЕФ, Ч ЮЕН УХФШ БМЗПТЙФНБ РПДУЮЕФБ ЛПОФТПМШОПК УХННЩ Adler-32 ? щ Ч
 > ЮЕН ПФМЙЮЙЕ ПФ CRC32?
 > 
 > 
 > 
 
 фЕОШ ДПВТЩК.
 
 RFC ОЕ РПНОА.
 
 CRC - ЬФП РПМЙОПНЙБМШОЩК БМЗПТЙФН. юФП УМЕДХЕФ ЙЪ РЕТЕЧПДБТБУЫЙЖТПЧЛЙ
 БОЗМЙКУЛПЗП БЛТПОЙНБ.
 
 Adler-32 СЧМСЕФУС БТЙЖНЕФЙЮЕУЛЙН.
 хУМЙ ОЕ ПЫЙВБАУШ, ЬФП НПДЙЖЙГЙТПЧБООЩК БМЗПТЙФН цМЕФЮЕТБ - ХЧЕМЙЮЕОБ 
 ТБЪТСДОПУФШ.
 
 ыПД НПЦОП РПУНПФТЕФШ Ч zlib, ЖБКМ adler32.c:
 
 /* adler32.c -- compute the Adler-32 checksum of a data stream
   * Copyright (C) 1995-1998 Mark Adler
   * For conditions of distribution and use, see copyright notice in zlib.h
   */
 
 /* @(#) $FreeBSD: src/lib/libz/adler32.c,v 1.5 1999/08/28 00:06:00 peter Exp $
 */
 
 #include "zlib.h"
 
 #define BASE 65521L /* largest prime smaller than 65536 */
 #define NMAX 5552
 /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
 
 #define DO1(buf,i)  {s1 += buf[i]; s2 += s1;}
 #define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);
 #define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);
 #define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);
 #define DO16(buf)   DO8(buf,0); DO8(buf,8);
 
 /* 
 ========================================================================= */
 uLong ZEXPORT adler32(adler, buf, len)
      uLong adler;
      const Bytef *buf;
      uInt len;
 {
      unsigned long s1 = adler & 0xffff;
      unsigned long s2 = (adler >> 16) & 0xffff;
      int k;
 
      if (buf == Z_NULL) return 1L;
 
      while (len > 0) {
          k = len < NMAX ? len : NMAX;
          len -= k;
          while (k >= 16) {
              DO16(buf);
       buf += 16;
              k -= 16;
          }
          if (k != 0) do {
              s1 += *buf++;
       s2 += s1;
          } while (--k);
          s1 %= BASE;
          s2 %= BASE;
      }
      return (s2 << 16) | s1;
 }
 сМЕЛУБОДТ юБХНПЧ,
 alx@relex.ru
 
 --- Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2) Gecko/20021126
  * Origin: Relex, Inc. (2:5025/17@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Adler-32   Alex Naumoff   09 Dec 2002 20:50:56 
Архивное /ru.algorithms/7753e52dd63b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional