diff --git a/examples/Crc32.cpp b/examples/Crc32.cpp index e8f1d74..33fd4e7 100644 --- a/examples/Crc32.cpp +++ b/examples/Crc32.cpp @@ -15,19 +15,19 @@ #include #include -uint32_t crc32(const char *s,size_t n, uint32_t crc=0xFFFFFFFF) { - - for(size_t i=0;i>=1; - if(b) crc=crc^0xEDB88320; - ch>>=1; - } - } - - return crc; +uint32_t crc32(const char *s, size_t n, uint32_t crc = 0xFFFFFFFF) { + + for (size_t i = 0; i < n; i++) { + unsigned char ch = static_cast(s[i]); + for (size_t j = 0; j < 8; j++) { + uint32_t b = (ch ^ crc) & 1; + crc >>= 1; + if (b) crc = crc ^ 0xEDB88320; + ch >>= 1; + } + } + + return crc; } int main() {