CRC-32: Difference between revisions

1,105 bytes added ,  4 years ago
Added Wren
m (Fix Perl6 -> Raku in comments)
(Added Wren)
Line 2,373:
Crc32 = 414FA339
Crc32 = 414FA339</lang>
 
=={{header|Wren}}==
{{trans|Go}}
<lang ecmascript>var toHex = Fn.new { |n|
var digits = "0123456789abcdef"
if (n == 0) return 0
var neg = false
if (n < 0) neg = true
var hex = ""
while (n > 0) {
hex = hex + "%(digits[n%16])"
n = (n/16).floor
}
return (neg) ? "-" : "" + hex[-1 .. 0]
}
 
class CRC32 {
static init() {
__table = List.filled(256, 0)
for (i in 0..255) {
var word = i
for (j in 0..7) {
if (word&1 == 1) {
word = (word >> 1) ^ 0xedb88320
} else {
word = word >> 1
}
}
__table[i] = word
}
}
 
static compute(s) {
var crc = ~0
var le = s.bytes.count
for (i in 0...le) {
var crb = crc & 0xff
crc = __table[crb^s[i].bytes[0]] ^ (crc >> 8)
}
return ~crc
}
}
 
CRC32.init()
var crc = CRC32.compute("The quick brown fox jumps over the lazy dog")
System.print(toHex.call(crc))</lang>
 
{{out}}
<pre>
414fa339
</pre>
 
=={{header|XPL0}}==
9,476

edits