blob: f0828d70136a96159799bca93fea202fe36720bf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#pragma once
#include <basis/seadTypes.h>
#include <string_view>
namespace ksys::util {
template <typename CharType = u8>
constexpr u32 calcCrc32(const CharType* data, std::size_t size) {
u32 crc = 0xFFFFFFFF;
for (std::size_t i = 0; i < size; ++i) {
crc ^= u8(data[i]);
for (std::size_t j = 0; j < 8; ++j) {
u32 mask = -(crc & 1);
crc = (crc >> 1) ^ (0xEDB88320 & mask);
}
}
return ~crc;
}
constexpr u32 calcCrc32(std::string_view str) {
return calcCrc32<char>(str.data(), str.size());
}
} // namespace ksys::util
|