Module: CRC32

Defined in:
ext/crc32/crc32.c

Class Method Summary collapse

Class Method Details

.itu_t(string) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'ext/crc32/crc32.c', line 4

static VALUE t_itu_t(VALUE self, VALUE string) {
  VALUE str = StringValue(string);
  int   n = RSTRING(str)->len;
  char* p = RSTRING(str)->ptr;
  unsigned long r = 0xFFFFFFFF;
  int i, j;

  for (i = 0; i < n; i++) {
    r = r ^ p[i];
    for (j = 0; j < 8; j++) {
      if ( (r & 1) != 0 ) {
        r = (r >> 1) ^ 0xEDB88320;
      } else {
        r = r >> 1;
      }
    }
  }
  return INT2FIX(r ^ 0xFFFFFFFF);
}