Go将16进制(HEX)编码的字符串转换为16进制的数据
可能标题有点难以理解,举个栗子说明一下:
输入的字符串:"3156EF"
转换后需要的结果 :0X31、0X56、0XEF
由于项目中有对数据格式的要求,输入的数据为16进制的字符串,最终需要保持为16进制的数据,作为笔记来记录一下。
经过查询,发现encoding/hex包中的func DecodeString(s string) ([]byte, error)和func EncodeToString(src []byte) string 函数可以进行相互转换,而且很容易实现此功能。具体见代码:
func main() {
strData := "3156EF"
// 将HEX编码的字符串转换为HEX数据
data1, _ := hex.DecodeString(strData)
for n,v:=range data1{
fmt.Printf("strData[%d]值十进制为:%v , 16进制为:%#X \n",n,v,v)
}
// 将HEX数据转换为HEX编码的字符串
fmt.Printf("strsdata = %v \n",hex.EncodeToString(data1))
}
// 显示的结果
/*
strData[0]值十进制为:49 , 16进制为:0X31
strData[1]值十进制为:86 , 16进制为:0X56
strData[2]值十进制为:239 , 16进制为:0XEF
strsdata = 3156ef
*/