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
|
}
|