package rfid import ( "encoding/hex" "fmt" "strconv" "strings" ) const ( ControlWordEPCReadResponse6C uint32 = 0x00011200 ControlWordConnectionStatus uint32 = 0x00011112 ControlWordDeviceInfo uint32 = 0x00010100 ) func Parse2Floor(input string) (string, error) { // 定义前缀 prefix := "E250019506C" // 检查字符串是否包含指定前缀 if !strings.HasPrefix(input, prefix) { return "", fmt.Errorf("字符串没有以指定前缀 %s 开始", prefix) } // 提取长度部分的字符串并转换成整数 lengthStr := input[len(prefix) : len(prefix)+2] length, err := strconv.Atoi(lengthStr) if err != nil { return "", fmt.Errorf("长度解析错误: %v", err) } //fmt.Println("data len ", length) // 获取末尾的字符,按照指定长度进行截取 if len(input) < len(prefix)+2+length { // 每个字符是2个十六进制字符表示 return "", fmt.Errorf("字符串长度不足") } hexSection := input[len(input)-length:] // 将十六进制字符串转换为字节数组 bytes, err := hex.DecodeString(hexSection) if err != nil { return "", fmt.Errorf("十六进制解析错误: %v", err) } // 将字节数组转换为字符串 return string(bytes), nil }