zhangzengfei
2024-10-17 7a19301f6972e0b81490e57200a634e4e3731a4c
rfid/proto.go
@@ -1,5 +1,47 @@
package rfid
import (
   "encoding/hex"
   "fmt"
   "strconv"
   "strings"
)
const (
   ControlWordEPCReadResponse6C uint32 = 0x00011200
)
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
}