Implemented CRC32-IEEE for PNG files
Update crc32.mjs, data-utils.mjs, and png-utils.mjs
This commit is contained in:
33
static/resources/NibblePoker/libs/crc32.mjs
Normal file
33
static/resources/NibblePoker/libs/crc32.mjs
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
/**
|
||||
* @param data {Uint8Array}
|
||||
* @param crc32 {number}
|
||||
* @return {number}
|
||||
*/
|
||||
export function stepCrc32IEEE(data, crc32 = 0xffffffff) {
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
crc32 ^= data[i];
|
||||
for (let j = 0; j < 8; j++) {
|
||||
crc32 = (crc32 >>> 1) ^ (crc32 & 1 ? 0xedb88320 : 0);
|
||||
}
|
||||
}
|
||||
return crc32;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param crc32 {number}
|
||||
* @return {number}
|
||||
*/
|
||||
export function finishCrc32IEEE(crc32) {
|
||||
return (crc32 ^ 0xffffffff) >>> 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the CRC32-IEEE for the given data
|
||||
* @param data {Uint8Array}
|
||||
* @param crc32 {number}
|
||||
* @return {number} The resulting CRC32
|
||||
*/
|
||||
export function crc32IEEE(data, crc32 = 0xffffffff) {
|
||||
return finishCrc32IEEE(stepCrc32IEEE(data, crc32));
|
||||
}
|
||||
Reference in New Issue
Block a user