cardBill你存的字符串是"0x00, 0xb2, 0x01, 0x5c, 0x00"所以[]byte得到的是这个字符串对应的uint8,你需要对逗号分隔的每一项字符串转换成16进制的数字。 或者存储时 cardBill := []string{string(p)}即可。
第一种方案:按string存的时候直接存16进制对应的字符
func main() {
cardBill := []string{string([]byte{0x00, 0xb2, 0x01, 0x5c, 0x00}),string([]byte{0x00, 0xb2, 0x02, 0x5c, 0x00})}
p := []byte{0x00, 0xb2, 0x01, 0x5c, 0x00}
fmt.Println(p)
fmt.Println([]byte(cardBill[0]))
return
}
// output:
// [0 178 1 92 0]
// [0 178 1 92 0]
第二种方法:获取cardBill[0]时将字符串解析为16进制
func main() {
cardBill := []string{"0x00, 0xb2, 0x01, 0x5c, 0x00","0x00, 0xb2, 0x02, 0x5c, 0x00"}
p := []byte{0x00, 0xb2, 0x01, 0x5c, 0x00}
p0 := []byte{}
l := strings.Split(cardBill[0], ",")
for i := range l {
s := strings.TrimSpace(l[i])
num, err := strconv.ParseInt(s, 0, 16)
if err != nil{
panic(err)
}
p0 = append(p0, uint8(num))
}
fmt.Println(p)
fmt.Println(p0)
return
}
// output:
// [0 178 1 92 0]
// [0 178 1 92 0]
这两种方法都可以让他们内容是相同的