ag_tools/types/crc32.go

47 lines
826 B
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package types
import (
"fmt"
"archgrid.xyz/ag/toolsbox/hash/crc32"
)
type CRC32Algorithm string
const (
CRC32_IEEE CRC32Algorithm = "ieee"
CRC32_CASTAGNOLI CRC32Algorithm = "castagnoli"
CRC32_KOOPMAN CRC32Algorithm = "koopman"
)
func (a *CRC32Algorithm) String() string {
return string(*a)
}
func (a *CRC32Algorithm) Set(s string) error {
switch s {
case "ieee", "castagnoli", "koopman":
*a = CRC32Algorithm(s)
return nil
default:
return fmt.Errorf("不支持的CRC32算法%s", s)
}
}
func (a *CRC32Algorithm) Type() string {
return "CRC32Algorithm"
}
func (a CRC32Algorithm) IntoCRC32Mode() crc32.CRC32Mode {
switch a {
case CRC32_IEEE:
return crc32.IEEE
case CRC32_CASTAGNOLI:
return crc32.Castagnoli
case CRC32_KOOPMAN:
return crc32.Koopman
default:
return crc32.IEEE
}
}