checksum-bytes ( bytes checksum -- value )
Factor handbook > Input and output > Checksums

Prev:checksum
Next:checksum-stream ( stream checksum -- value )


Vocabulary
checksums

Inputs and outputs
bytesa sequence of bytes
checksuma checksum specifier
valuea byte-array


Generic word contract
Computes the checksum of all data in a sequence.

Examples
USING: checksums checksums.crc32 prettyprint ; B{ 1 10 100 } crc32 checksum-bytes .
B{ 78 179 254 238 }


Definition

GENERIC: checksum-bytes ( bytes checksum -- value )


Methods












































































M:: xxhash checksum-bytes ( bytes checksum -- value )
checksum seed>> :> seed bytes length :> len len dup 16 mod -
:> len/16 len dup 4 mod - :> len/4 len 16 >= [
seed prime1 w+ prime2 w+ seed prime2 w+
seed seed prime1 w- 0 len/16 bytes uint native-mapper
4 <groups> [
first4
[ prime2 w* w+ 13 bitroll-32 prime1 w* ] 4 napply
] each {
[ 1 bitroll-32 ]
[ 7 bitroll-32 ]
[ 12 bitroll-32 ]
[ 18 bitroll-32 ]
} spread w+ w+ w+
] [ seed prime5 w+ ] if len w+
len/16 len/4 bytes uint native-mapper
[ prime3 w* w+ 17 bitroll-32 prime4 w* ] each
bytes len/4 tail-slice
[ prime5 w* w+ 11 bitroll-32 prime1 w* ] each
[ -15 shift ] [ bitxor ] bi prime2 w*
[ -13 shift ] [ bitxor ] bi prime3 w*
[ -16 shift ] [ bitxor ] bi ;