crc32

package
v1.0.10006 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2022 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const Size = 4

大小

Variables

View Source
var (
	// "CRC-32" x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
	CRC32 = Params{0x04C11DB7, 0xFFFFFFFF, true, true, 0xFFFFFFFF}
	// "CRC-32/MPEG-2" x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
	CRC32_MPEG_2 = Params{0x04C11DB7, 0xFFFFFFFF, false, false, 0x00000000}
	// "CRC-32/BZIP2" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_BZIP2 = Params{0x04C11DB7, 0xFFFFFFFF, false, false, 0xFFFFFFFF}
	// "CRC-32/POSIX" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_POSIX = Params{0x04C11DB7, 0x00000000, false, false, 0xFFFFFFFF}
	// "CRC-32/CKSUM" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_CKSUM = CRC32_POSIX
	// "CRC-32/JAMCRC" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_JAMCRC = Params{0x04C11DB7, 0xFFFFFFFF, true, true, 0x00000000}
	// "CRC-32/CRC32A" (ITU I.363.5 algorithm, popularized by BZIP2) checksum.
	// X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1
	CRC32_CRC32A = CRC32_BZIP2

	// "CRC-32/IEEE" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_IEEE = CRC32
	// "CRC-32/Castagnoli" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_Castagnoli = Params{0x1EDC6F41, 0xFFFFFFFF, true, true, 0xFFFFFFFF}
	// "CRC-32/CRC32C" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_CRC32C = CRC32_Castagnoli
	// "CRC-32/Koopman" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_Koopman = Params{0x741B8CD7, 0xFFFFFFFF, true, true, 0xFFFFFFFF}

	// "CRC-32/XFER" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_XFER = Params{0x000000AF, 0x00000000, false, false, 0x00000000}
	// "CRC-32/CRC32Q" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_CRC32Q = Params{0x814141AB, 0x00000000, false, false, 0x00000000}
	// "CRC-32/CRC32D" x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
	CRC32_CRC32D = Params{0xA833982B, 0xFFFFFFFF, true, true, 0xFFFFFFFF}
)

类型列表

Functions

func Checksum

func Checksum(data []byte, params Params) uint32

生成

func ChecksumBZIP2

func ChecksumBZIP2(data []byte) uint32

生成 BZIP2

func ChecksumCKSUM added in v1.0.10005

func ChecksumCKSUM(data []byte) uint32

生成 CKSUM

func ChecksumCRC32

func ChecksumCRC32(data []byte) uint32

生成 CRC32

func ChecksumCRC32A added in v1.0.10002

func ChecksumCRC32A(data []byte) uint32

生成 CRC32A

func ChecksumCRC32C added in v1.0.10002

func ChecksumCRC32C(data []byte) uint32

生成 CRC32C

func ChecksumCRC32D added in v1.0.10005

func ChecksumCRC32D(data []byte) uint32

生成 CRC32D

func ChecksumCRC32Q added in v1.0.10005

func ChecksumCRC32Q(data []byte) uint32

生成 CRC32Q

func ChecksumCastagnoli added in v1.0.10002

func ChecksumCastagnoli(data []byte) uint32

生成 Castagnoli

func ChecksumIEEE added in v1.0.10002

func ChecksumIEEE(data []byte) uint32

生成 IEEE

func ChecksumJAMCRC

func ChecksumJAMCRC(data []byte) uint32

生成 JAMCRC

func ChecksumKoopman added in v1.0.10002

func ChecksumKoopman(data []byte) uint32

生成 Koopman

func ChecksumMPEG_2

func ChecksumMPEG_2(data []byte) uint32

生成 MPEG_2

func ChecksumPOSIX

func ChecksumPOSIX(data []byte) uint32

生成 POSIX

func ChecksumXFER added in v1.0.10005

func ChecksumXFER(data []byte) uint32

生成 XFER

func ToBinString

func ToBinString(data uint32) string

输出二进制字符

func ToHexString

func ToHexString(data uint32) string

输出 16 进制字符

func ToReverseHexBinString

func ToReverseHexBinString(data uint32) string

输出二进制字符,高低字节对调

func ToReverseHexString

func ToReverseHexString(data uint32) string

输出 16 进制字符,高低字节对调

Types

type CRC added in v1.0.10006

type CRC struct {
	// contains filtered or unexported fields
}

表格

func NewCRC added in v1.0.10006

func NewCRC(params ...Params) *CRC

构造函数

func NewCRC32

func NewCRC32(params ...Params) *CRC

构造函数

func (*CRC) Checksum added in v1.0.10006

func (this *CRC) Checksum(data []byte) uint32

Checksum LSB-MSB,即低字节在前 Modbus,即高字节在前

func (*CRC) Complete added in v1.0.10006

func (this *CRC) Complete(crc uint32) uint32

完成

func (*CRC) GetParams added in v1.0.10006

func (this *CRC) GetParams() Params

获取参数

func (*CRC) GetTable added in v1.0.10006

func (this *CRC) GetTable() [256]uint32

获取数据

func (*CRC) Init added in v1.0.10006

func (this *CRC) Init() uint32

初始值

func (*CRC) MakeTable added in v1.0.10006

func (this *CRC) MakeTable() *CRC

生成数值

func (*CRC) Update added in v1.0.10006

func (this *CRC) Update(crc uint32, data []byte) uint32

更新

func (*CRC) WithParams added in v1.0.10006

func (this *CRC) WithParams(params Params) *CRC

设置参数

func (*CRC) WithTable added in v1.0.10006

func (this *CRC) WithTable(table [256]uint32) *CRC

设置数据

type Hash32 added in v1.0.10002

type Hash32 interface {
	hash.Hash
	Sum32() uint32
}

crc32 hash

func NewCRC32Hash added in v1.0.10002

func NewCRC32Hash(params Params) Hash32

Hash

func NewHash added in v1.0.10002

func NewHash(crc *CRC) Hash32

构造函数

type Params

type Params struct {
	// 生成项的简写,以16进制表示。
	// 例如:CRC-32 即是0x04C11DB7,
	// 忽略了最高位的"1",即完整的生成项是0x104C11DB7。
	Poly uint32

	// 这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。
	Init uint32

	// 待测数据的每个字节是否按位反转,True或False。
	RefIn bool

	// 在计算后之后,异或输出之前,整个数据是否按位反转,True或False。
	RefOut bool

	// 计算结果与此参数异或后得到最终的CRC值。
	XorOut uint32
}

参数 NAME:参数模型名称。 WIDTH:宽度,即CRC比特数。位数为:32

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL