ag_tools/cmd/crc8.go

51 lines
1.2 KiB
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 cmd
import (
"fmt"
"strings"
"archgrid.xyz/ag/tools/types"
"archgrid.xyz/ag/toolsbox/hash/crc8"
"github.com/spf13/cobra"
)
var (
crc8Algorithm types.CRC8Algorithm
crc8File bool
)
var crc8Cmd = &cobra.Command{
Use: "crc8",
Short: `CRC8校验`,
Long: `对给定的内容进行CRC8校验计算。`,
Args: cobra.MinimumNArgs(1),
Run: crc8Execute,
}
func crc8Execute(cmd *cobra.Command, args []string) {
var (
result []byte
err error
)
if crc8File {
result, err = crc8.SumFile(args[0], crc8Algorithm.IntoCRC8Mode())
} else {
result = crc8.CRC8([]byte(args[0]), crc8Algorithm.IntoCRC8Mode())
}
if err != nil {
fmt.Printf("计算CRC8校验值时发生错误%s\n", err)
return
}
var builder strings.Builder
for _, b := range result {
builder.WriteString(fmt.Sprintf(" %02X", b))
}
fmt.Printf("CRC8校验值%s\n", builder.String())
}
func init() {
crc8Cmd.PersistentFlags().VarP(&crc8Algorithm, "algorithm", "a", "CRC8算法可选值有crc8, cdma2000, darc, dvb-s2, ebu, i-code, itu, maxim, rohc, wcdma")
crc8Cmd.PersistentFlags().BoolVarP(&crc8File, "file", "f", false, "从文件中读取内容")
rootCmd.AddCommand(crc8Cmd)
}