### Question:
Ut0Crc32 { public static long crc32(byte[] data, int offset, int len) { long crc = 0xFFFFFFFFL; long[][] table = init(UT_CRC_32_SLICE_8_TABLE_THREAD_LOCAL.get()); while (len >= 128) { for (int i = 0; i < 16; i++) { long dataInt = fromByteArray(data, offset); crc = utCrc3264LowSw(crc, dataInt, table); offset += 8; len -= 8; } } while (len >= 8) { long dataInt = fromByteArray(data, offset); crc = utCrc3264LowSw(crc, dataInt, table); offset += 8; len -= 8; } while (len > 0) { crc = utCrc328Sw(crc, data[offset] & 0xFFL, table); offset++; len--; } return (~crc) & 0xFFFFFFFFL; }  static long crc32(byte[] data, int offset, int len); static long crc32ByteByByte(byte[] data, int offset, int len); static long utCrc3264LowSw(long crc, long data, long[][] table); static long utCrc328Sw(long crc, long data, long[][] table); static long utCrc32SwapByteorder(long i); static long fromByteArray(byte[] bytes, int offset);  }### Answer:
@Test public void testCrc32() { String str = "innodb"; byte[] bytes = str.getBytes(); assertThat(Ut0Crc32.crc32(bytes, 0, bytes.length), is(1090276284L)); assertThat(Ut0Crc32.crc32ByteByByte(bytes, 0, bytes.length), is(1090276284L)); }