8#ifndef CRC32CONSTEXPER_H
9#define CRC32CONSTEXPER_H
25 std::array<uint32_t, 256> table{};
26 for (uint32_t i = 0; i < 256; ++i) {
28 for (
int j = 0; j < 8; ++j) {
29 crc = (crc >> 1) ^ (-(crc & 1) & polynomial);
50constexpr uint32_t
calculateCrc32(
const char* data,
size_t size, uint32_t initialCrc = 0xFFFFFFFF) {
51 uint32_t crc = initialCrc;
52 for (
size_t i = 0; i < size; ++i) {
53 crc =
crc32Table[(crc ^ data[i]) & 0xFF] ^ (crc >> 8);
55 return crc ^ 0xFFFFFFFF;
66constexpr uint16_t
calculateCrc16(
const char* data,
size_t size, uint32_t initialCrc = 0xFFFFFFFF) {
78constexpr uint16_t
calculateCrc8(
const char* data,
size_t size, uint32_t initialCrc = 0xFFFFFFFF) {
The QuasaraAppUtils class This lib include base functions for the all applications of QuasarApp group...
constexpr std::array< uint32_t, 256 > generateCrc32Table(uint32_t polynomial=0xEDB88320)
generateCrc32Table This method generate crc32 table for fast calculate crc32 hash.
constexpr uint32_t calculateCrc32(const char *data, size_t size, uint32_t initialCrc=0xFFFFFFFF)
calculateCrc32 This method calculate crc32 hash for data.
constexpr uint16_t calculateCrc8(const char *data, size_t size, uint32_t initialCrc=0xFFFFFFFF)
calculateCrc8 This method calculate crc8 hash for data.
constexpr uint16_t calculateCrc16(const char *data, size_t size, uint32_t initialCrc=0xFFFFFFFF)
calculateCrc16 This method calculate crc16 hash for data.
constexpr std::array< uint32_t, 256 > crc32Table
crc32Table This is crc32 table for fast calculate crc32 hash.