crc.js 469 B

123456789101112131415161718
  1. import { isHermes } from './platform.js'
  2. export function crc32Table() {
  3. const T = new (isHermes ? Uint32Array : Int32Array)(16 * 256) // Signed to fit int32 on read
  4. for (let n = 0; n < 256; n++) {
  5. let c = n
  6. for (let i = 0; i < 8; i++) c = c & 1 ? 0xed_b8_83_20 ^ (c >>> 1) : c >>> 1
  7. T[n] = c
  8. }
  9. for (let n = 0; n < 256; n++) {
  10. let v = T[n]
  11. for (let c = 256 + n; c < T.length; c += 256) v = T[c] = (v >>> 8) ^ T[v & 0xff]
  12. }
  13. return T
  14. }