跳转到内容

libs::CRC API

文档稀疏
符号
24
已记录
3
修订版本
0.1.0+855c407f828e

21 / 24 个公开 API 符号没有说明。

命名空间

2

1

结构体

6

函数

5

crc::CRCX::calc

                    static constexpr value_type crc::CRCX< Bits, Poly, Init, Rin, Rout, XorOut >::calc (const std::array< uint8_t, N > &data)
                  

上游未提供说明。

libs/utils/crc/crc.hpp:168

crc::CRCX::calc

                    static value_type crc::CRCX< Bits, Poly, Init, Rin, Rout, XorOut >::calc (const uint8_t *data, size_t len)
                  

上游未提供说明。

libs/utils/crc/crc.hpp:140

crc::CRCX::generate_table

                    static constexpr std::array< value_type, 256 > crc::CRCX< Bits, Poly, Init, Rin, Rout, XorOut >::generate_table ()
                  

生成 256 项查找表。 运行时计算 CRC 时只需要做表查找,不必每个 bit 都手工移位。

libs/utils/crc/crc.hpp:129

crc::CRCX::table_entry

                    static constexpr value_type crc::CRCX< Bits, Poly, Init, Rin, Rout, XorOut >::table_entry (uint8_t index)
                  

计算查找表中的单个表项。 这个函数在编译期生成 256 项查找表时被调用,因此运行时不会重复做这部分计算。

libs/utils/crc/crc.hpp:106

crc::detail::bit_reverse

                    T crc::detail::bit_reverse (T value, unsigned bits)
                  

上游未提供说明。

libs/utils/crc/crc.hpp:55

类型定义

7

crc::CRCX::value_type

                    using crc::CRCX< Bits, Poly, Init, Rin, Rout, XorOut >::value_type = detail::uint_of_bits_t<Bits>
                  

上游未提供说明。

libs/utils/crc/crc.hpp:97

crc::detail::uint_of_bits< 16 >::type

                    using crc::detail::uint_of_bits< 16 >::type = uint16_t
                  

上游未提供说明。

libs/utils/crc/crc.hpp:71

crc::detail::uint_of_bits< 24 >::type

                    using crc::detail::uint_of_bits< 24 >::type = uint32_t
                  

上游未提供说明。

libs/utils/crc/crc.hpp:75

crc::detail::uint_of_bits< 32 >::type

                    using crc::detail::uint_of_bits< 32 >::type = uint32_t
                  

上游未提供说明。

libs/utils/crc/crc.hpp:79

crc::detail::uint_of_bits< 64 >::type

                    using crc::detail::uint_of_bits< 64 >::type = uint64_t
                  

上游未提供说明。

libs/utils/crc/crc.hpp:83

crc::detail::uint_of_bits< 8 >::type

                    using crc::detail::uint_of_bits< 8 >::type = uint8_t
                  

上游未提供说明。

libs/utils/crc/crc.hpp:67

crc::detail::uint_of_bits_t

                    using crc::detail::uint_of_bits_t = typename uint_of_bits<Bits>::type
                  

上游未提供说明。

libs/utils/crc/crc.hpp:86

变量

2

crc::CRCX::mask

                    value_type crc::CRCX< Bits, Poly, Init, Rin, Rout, XorOut >::mask
                  

上游未提供说明。

libs/utils/crc/crc.hpp:99

文件

1

libs/utils/crc/crc.hpp

通用 CRC 模板库。 syhanjin 2026-03-01 这个文件把常见 CRC 算法统一抽象成一个模板:多项式、初值、输入/输出是否反转、最终异或值都可以配置。 对使用者来说,最常见的用法就是直接 typedef 一个别名,然后在协议校验、数据帧完整性检查里调用 calc()。 下面这些别名样例可以直接复制到自己的代码里: //CRC-8 using crc::CRCX<8, 0x07, 0x00, false, false, 0x00> CRC8_ATM=; //CRC-8/MAXIM using crc::CRCX<8, 0x31, 0x00, true, true, 0x00> CRC8_MAXIM=; //CRC-16/MODBUS using crc::CRCX<16, 0x8005, 0xFFFF, true, true, 0x0000> CRC16_MODBUS=; //CRC-16/CCITT-FALSE using crc::CRCX<16, 0x1021, 0xFFFF, false, false, 0x0000> CRC16_CCITT=; //CRC-24/OpenPGP using crc::CRCX<24, 0x864CFB, 0xB704CE, false, false, 0x000000> CRC24_PGP=; //CRC-32(Ethernet) using crc::CRCX<32, 0x04C11DB7, 0xFFFFFFFF, true, true, 0xFFFFFFFF> CRC32=; //CRC-32C using crc::CRCX<32, 0x1EDC6F41, 0xFFFFFFFF, true, true, 0xFFFFFFFF> CRC32C=; //CRC-64/ECMA using crc::CRCX CRC64_ECMA=<64, 0x42F0E1EBA9EA3693ULL, 0x0000000000000000ULL, false , false , 0x0000000000000000ULL>;

libs/utils/crc/crc.hpp