1 USING: kernel math sequences namespaces ;
4 : crc32-polynomial HEX: edb88320 ; inline
6 : crc32-init ( -- table )
9 dup 1 bitand zero? >r -1 shift r> [ crc32-polynomial bitxor ] unless
14 crc32-init crc32-table set-global
16 : calc-crc32 ( ch crc -- crc )
17 dupd bitxor HEX: ff bitand crc32-table get nth swap -8 shift bitxor ;
21 >r HEX: ffffffff dup r> [ calc-crc32 ] each bitxor ;