golang技巧之-string转string 型[]byte数组

本文介绍了一种在Golang中将特定格式的十六进制字符串转换为16字节长度的byte数组的方法。通过解析字符串并利用strconv包进行类型转换,实现了将如0x00,0x01...格式的字符串转化为可用于函数调用的byte切片。
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值