golang技巧之-string转string 型[]byte数组
用途
有一个数据库读取到的字符串: “0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F” 需要存储到一个string类型的key当中,另一个使用key 作为参数传入内部使用的 确实要求16个byte的数:
func f(key string) {
keya := []byte(key)
....
}
函数传入的为string类型 得到的数据为string(key[:])
转化如下
func stringToByteSlice(s string) string {
var ss [16]byte
a := strings.Split(s, ",")
for i := 0; i < len(ss); i++ {
v, _ := strconv.ParseUint(a[i], 0, 8)
ss[i] = uint8(v)
}
return string(ss[:16])
}
测试代码
func main() {
str := "0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F"
key := stringToByteSlice(str)
fmt.Printf("key:%T\n", key)
testFunc(string(key[:]))
}
func hello(s string) {
for i, v := range s {
if i == 8 {
fmt.Println("")
}
fmt.Printf("s[%d]: 0x%X\t", i, v)
}
fmt.Println("")
}
打印结果
key:string
s[0]: 0x0 s[1]: 0x1 s[2]: 0x2 s[3]: 0x3 s[4]: 0x4 s[5]: 0x5 s[6]: 0x6 s[7]: 0x7
s[8]: 0x8 s[9]: 0x9 s[10]: 0xA s[11]: 0xB s[12]: 0xC s[13]: 0xD s[14]: 0xE s[15]: 0xF