Documentation
¶
Overview ¶
- @Author: kamalyes 501893067@qq.com
- @Date: 2025-06-09 17:15:16
- @LastEditors: kamalyes 501893067@qq.com
- @LastEditTime: 2025-06-11 10:29:15
- @FilePath: \go-toolbox\pkg\crc\config.go
- @Description: CRC算法配置库 *
- Copyright (c) 2025 by kamalyes, All Rights Reserved.
* @Author: kamalyes 501893067@qq.com * @Date: 2025-06-09 17:15:16
- @LastEditors: kamalyes 501893067@qq.com
- @LastEditTime: 2025-06-11 10:15:26
- @FilePath: \go-toolbox\pkg\crc\crc.go
* @Description: CRC算法核心实现 * * Copyright (c) 2025 by kamalyes, All Rights Reserved.
- @Author: kamalyes 501893067@qq.com
- @Date: 2025-06-09 17:15:16
- @LastEditors: kamalyes 501893067@qq.com
- @LastEditTime: 2025-06-11 10:33:31
- @FilePath: \go-toolbox\pkg\crc\factory.go
- @Description: *
- Copyright (c) 2025 by kamalyes, All Rights Reserved.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // CRC-4/ITU标准配置 CRC4_ITU = Config{ Width: 4, Poly: 0x03, Init: 0x00, RefIn: true, RefOut: true, XorOut: 0x00, } // CRC-5/EPC标准配置 CRC5_EPC = Config{ Width: 5, Poly: 0x09, Init: 0x09, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-5/ITU标准配置 CRC5_ITU = Config{ Width: 5, Poly: 0x15, Init: 0x00, RefIn: true, RefOut: true, XorOut: 0x00, } // CRC-5/USB标准配置 CRC5_USB = Config{ Width: 5, Poly: 0x05, Init: 0x1F, RefIn: true, RefOut: true, XorOut: 0x1F, } // CRC-6/ITU标准配置 CRC6_ITU = Config{ Width: 6, Poly: 0x03, Init: 0x00, RefIn: true, RefOut: true, XorOut: 0x00, } // CRC-7/MMC标准配置 CRC7_MMC = Config{ Width: 7, Poly: 0x09, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-8标准配置 CRC8 = Config{ Width: 8, Poly: 0x07, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-8/ATM标准配置 CRC8_ATM = Config{ Width: 8, Poly: 0x07, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-8/ITU标准配置 CRC8_ITU = Config{ Width: 8, Poly: 0x07, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x55, } // CRC-8/ROHC标准配置 CRC8_ROHC = Config{ Width: 8, Poly: 0x07, Init: 0xFF, RefIn: true, RefOut: true, XorOut: 0x00, } // CRC-8/MAXIM标准配置 CRC8_MAXIM = Config{ Width: 8, Poly: 0x31, Init: 0x00, RefIn: true, RefOut: true, XorOut: 0x00, } // CRC-8/CDMA2000标准配置 CRC8_CDMA2000 = Config{ Width: 8, Poly: 0x9B, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-8/DALLAS/1-WIRE标准配置 CRC8_DALLAS_1WIRE = Config{ Width: 8, Poly: 0x31, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-16/IBM标准配置 CRC16_IBM = Config{ Width: 16, Poly: 0x8005, Init: 0x0000, RefIn: true, RefOut: true, XorOut: 0x0000, } // CRC-16/MAXIM标准配置 CRC16_MAXIM = Config{ Width: 16, Poly: 0x8005, Init: 0x0000, RefIn: true, RefOut: true, XorOut: 0xFFFF, } // CRC-16/USB标准配置 CRC16_USB = Config{ Width: 16, Poly: 0x8005, Init: 0xFFFF, RefIn: true, RefOut: true, XorOut: 0xFFFF, } // CRC-16/MODBUS标准配置 CRC16_MODBUS = Config{ Width: 16, Poly: 0x8005, Init: 0xFFFF, RefIn: true, RefOut: true, XorOut: 0x0000, } // CRC-16/CCITT标准配置 CRC16_CCITT = Config{ Width: 16, Poly: 0x1021, Init: 0xFFFF, RefIn: false, RefOut: false, XorOut: 0x0000, } // CRC-16/CCITT-FALSE标准配置 CRC16_CCITT_FALSE = Config{ Width: 16, Poly: 0x1021, Init: 0x0000, RefIn: false, RefOut: false, XorOut: 0x0000, } // CRC-16/X25标准配置 CRC16_X25 = Config{ Width: 16, Poly: 0x1021, Init: 0xFFFF, RefIn: true, RefOut: true, XorOut: 0xFFFF, } // CRC-16/XMODEM标准配置 CRC16_XMODEM = Config{ Width: 16, Poly: 0xA001, Init: 0x00, RefIn: false, RefOut: false, XorOut: 0x00, } // CRC-16/DNP标准配置 CRC16_DNP = Config{ Width: 16, Poly: 0x3D65, Init: 0x0000, RefIn: true, RefOut: true, XorOut: 0xFFFF, } // CRC-16/ANSI标准配置 CRC16_ANSI = Config{ Width: 16, Poly: 0xA001, Init: 0x0000, RefIn: false, RefOut: false, XorOut: 0x0000, } // CRC-16/CCITT-Kermit标准配置 CRC16_CCITT_KERMIT = Config{ Width: 16, Poly: 0x1021, Init: 0x0000, RefIn: true, RefOut: true, XorOut: 0x0000, } // CRC-16/GENERIC标准配置 CRC16_GENERIC = Config{ Width: 16, Poly: 0xA001, Init: 0x0000, RefIn: false, RefOut: false, XorOut: 0x0000, } // CRC-16/CCITT-TRUE标准配置 CRC16_CCITT_TRUE = Config{ Width: 16, Poly: 0x1021, Init: 0x0000, RefIn: true, RefOut: true, XorOut: 0x0000, } // CRC-24/OPENPGP标准配置 CRC24_OPENPGP = Config{ Width: 24, Poly: 0x864CFB, Init: 0xB704CE, RefIn: false, RefOut: false, XorOut: 0x000000, } // CRC-32标准配置 CRC32 = Config{ Width: 32, Poly: 0x04C11DB7, Init: 0xFFFFFFFF, RefIn: true, RefOut: true, XorOut: 0xFFFFFFFF, } // CRC-32/MPEG-2标准配置 CRC32_MPEG2 = Config{ Width: 32, Poly: 0x04C11DB7, Init: 0xFFFFFFFF, RefIn: false, RefOut: false, XorOut: 0x00000000, } // CRC-32/PKZIP标准配置 CRC32_PKZIP = Config{ Width: 32, Poly: 0xEDB88320, Init: 0xFFFFFFFF, RefIn: true, RefOut: true, XorOut: 0xFFFFFFFF, } // CRC-32C标准配置 CRC32C = Config{ Width: 32, Poly: 0x82F63B78, Init: 0xFFFFFFFF, RefIn: true, RefOut: true, XorOut: 0xFFFFFFFF, } // CRC-32/CASTAGNOLI标准配置 CRC32_CASTAGNOLI = Config{ Width: 32, Poly: 0x1EDC6F41, Init: 0xFFFFFFFF, RefIn: true, RefOut: true, XorOut: 0xFFFFFFFF, } // CRC-32/ADLER32标准配置 CRC32_ADLER32 = Config{ Width: 32, Poly: 0xFFFFFFFF, Init: 0x01, RefIn: false, RefOut: false, XorOut: 0x00000000, } // CRC-64/ECMA标准配置 CRC64_ECMA = Config{ Width: 64, Poly: 0x42F0E1EBA9EA3693, Init: 0x0000000000000000, RefIn: true, RefOut: true, XorOut: 0x0000000000000000, } // CRC-64/ISO标准配置 CRC64_ISO = Config{ Width: 64, Poly: 0x42F0E1EBA9EA3693, Init: 0xFFFFFFFFFFFFFFFF, RefIn: true, RefOut: true, XorOut: 0x0000000000000000, } // CRC-64/WEIERSTRASS标准配置 CRC64_WEIERSTRASS = Config{ Width: 64, Poly: 0x42F0E1EBA9EA3693, Init: 0xFFFFFFFFFFFFFFFF, RefIn: true, RefOut: true, XorOut: 0x0000000000000000, } )
CRC算法的标准配置
View Source
var ( // CRC-4/ITU标准配置工厂 CRC4_ITUFactory = NewCachedFactory(CRC4_ITU) // CRC-5/EPC标准配置工厂 CRC5_EPCFactory = NewCachedFactory(CRC5_EPC) // CRC-5/ITU标准配置工厂 CRC5_ITUFactory = NewCachedFactory(CRC5_ITU) // CRC-5/USB标准配置工厂 CRC5_USBFactory = NewCachedFactory(CRC5_USB) // CRC-6/ITU标准配置工厂 CRC6_ITUFactory = NewCachedFactory(CRC6_ITU) // CRC-7/MMC标准配置工厂 CRC7_MMCFactory = NewCachedFactory(CRC7_MMC) // CRC-8标准配置工厂 CRC8Factory = NewCachedFactory(CRC8) // CRC-8/ATM标准配置工厂 CRC8_ATMFactory = NewCachedFactory(CRC8_ATM) // CRC-8/CDMA2000标准配置工厂 CRC8_CDMA2000Factory = NewCachedFactory(CRC8_CDMA2000) // CRC-8/DALLAS/1-WIRE标准配置工厂 CRC8_DALLAS_1WIREFactory = NewCachedFactory(CRC8_DALLAS_1WIRE) // CRC-8/ITU标准配置工厂 CRC8_ITUFactory = NewCachedFactory(CRC8_ITU) // CRC-8/ROHC标准配置工厂 CRC8_ROHCFactory = NewCachedFactory(CRC8_ROHC) // CRC-8/MAXIM标准配置工厂 CRC8_MAXIMFactory = NewCachedFactory(CRC8_MAXIM) // CRC-16/IBM标准配置工厂 CRC16_IBMFactory = NewCachedFactory(CRC16_IBM) // CRC-16/MAXIM标准配置工厂 CRC16_MAXIMFactory = NewCachedFactory(CRC16_MAXIM) // CRC-16/USB标准配置工厂 CRC16_USBFactory = NewCachedFactory(CRC16_USB) // CRC-16/MODBUS标准配置工厂 CRC16_MODBUSFactory = NewCachedFactory(CRC16_MODBUS) // CRC-16/DNP标准配置工厂 CRC16_DNPFactory = NewCachedFactory(CRC16_DNP) // CRC-16/ANSI标准配置工厂 CRC16_ANSIFactory = NewCachedFactory(CRC16_ANSI) // CRC-16/XMODEM标准配置工厂 CRC16_XMODEMFactory = NewCachedFactory(CRC16_XMODEM) // CRC-16/CCITT标准配置工厂 CRC16_CCITTFactory = NewCachedFactory(CRC16_CCITT) // CRC-16/CCITT-FALSE标准配置工厂 CRC16_CCITT_FALSEFactory = NewCachedFactory(CRC16_CCITT_FALSE) // CRC-16/CCITT-Kermit标准配置工厂 CRC16_CCITT_KERMITFactory = NewCachedFactory(CRC16_CCITT_KERMIT) // CRC-16/X25标准配置工厂 CRC16_X25Factory = NewCachedFactory(CRC16_X25) // CRC-32标准配置工厂 CRC32Factory = NewCachedFactory(CRC32) // CRC-32/MPEG-2标准配置工厂 CRC32_MPEG2Factory = NewCachedFactory(CRC32_MPEG2) // CRC-32/PKZIP标准配置工厂 CRC32_PKZIPFactory = NewCachedFactory(CRC32_PKZIP) // CRC-32C标准配置工厂 CRC32CFactory = NewCachedFactory(CRC32C) // CRC-24/OPENPGP标准配置工厂 CRC24_OPENPGPFactory = NewCachedFactory(CRC24_OPENPGP) // CRC-64/ECMA标准配置工厂 CRC64_ECMAFactory = NewCachedFactory(CRC64_ECMA) // CRC-64/ISO标准配置工厂 CRC64_ISOFactory = NewCachedFactory(CRC64_ISO) // CRC-64/WEIERSTRASS标准配置工厂 CRC64_WEIERSTRASSFactory = NewCachedFactory(CRC64_WEIERSTRASS) // CRC-32/CASTAGNOLI标准配置工厂 CRC32_CASTAGNOLIFactory = NewCachedFactory(CRC32_CASTAGNOLI) // CRC-16/GENERIC标准配置工厂 CRC16_GENERICFactory = NewCachedFactory(CRC16_GENERIC) // CRC-16/CCITT-TRUE标准配置工厂 CRC16_CCITT_TRUEFactory = NewCachedFactory(CRC16_CCITT_TRUE) // CRC-32/ADLER32标准配置工厂 CRC32_ADLER32Factory = NewCachedFactory(CRC32_ADLER32) )
预定义标准工厂
Functions ¶
This section is empty.
Types ¶
type Calculator ¶
Calculator 定义CRC计算器接口
type Config ¶
type Config struct {
Width uint // 校验位宽 (8/16/24/32/64)
Poly uint64 // 生成多项式 (需注意位宽对齐)
Init uint64 // 初始值
RefIn bool // 输入数据字节位反转
RefOut bool // 输出结果位反转
XorOut uint64 // 最终异或值
}
Config 表示CRC算法的配置结构体
type Factory ¶
type Factory interface {
Create() (Calculator, error) // 创建计算器实例,返回错误
}
Factory 定义计算器工厂接口
func NewCachedFactory ¶
NewCachedFactory 创建带缓存的工厂 参数: cfg - CRC配置 返回: 工厂实例 (线程安全)
func NewFactory ¶
NewFactory 创建标准工厂 参数: cfg - CRC配置 返回: 工厂实例
Click to show internal directories.
Click to hide internal directories.