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]

这两种方法都可以让他们内容是相同的