ag_tools/cmd/crc16.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/crc16"
"github.com/spf13/cobra"
)
var (
crc16Algorithm types.CRC16Algorithm = types.CRC16_IBM
crc16File bool
)
var crc16Cmd = &cobra.Command{
Use: "crc16",
Short: `CRC16校验`,
Long: `对给定的内容进行CRC16校验计算。`,
Args: cobra.MinimumNArgs(1),
Run: crc16Execute,
}
func crc16Execute(cmd *cobra.Command, args []string) {
var (
result []byte
err error
)
if crc16File {
result, err = crc16.SumFile(args[0], crc16Algorithm.IntoCRC16Mode())
} else {
result = crc16.CRC16([]byte(args[0]), crc16Algorithm.IntoCRC16Mode())
}
if err != nil {
fmt.Printf("计算CRC16校验值时发生错误%s\n", err)
return
}
var builder strings.Builder
for _, b := range result {
builder.WriteString(fmt.Sprintf(" %02X", b))
}
fmt.Printf("CRC16校验值%s\n", builder.String())
}
func init() {
crc16Cmd.PersistentFlags().VarP(&crc16Algorithm, "algorithm", "a", "CRC16算法可选值有ccitt, ccitt-false, scsi, ibm, mbus缺省值为ibm。")
crc16Cmd.PersistentFlags().BoolVarP(&crc16File, "file", "f", false, "从文件中读取内容")
rootCmd.AddCommand(crc16Cmd)
}