go字符串与16进制[]byte的转换

最近工作中遇到的问题,要实现的功能正如题目所说,我要将字符串转换为16进制的[]byte,网上搜了好多的文章,很多的题目都是“[]byte 与 16进制(String) 的相互转换”这种类似的题目,虽然参考以后也解决了问题,但是这也给了很大的误导性,本身16进制的字符串就是个问题,难道我们传入字符串还要传入一个16进制的字符串?而且我要的是[]byte为16进制,不知道为什么要这样起标题,好了,直接进入我们的主题吧

func main() {
    // 转换的用的 byte数据
    byte_data := []byte(`测试数据`)
    // 将 byte 装换为 16进制的字符串
    hex_string_data := hex.EncodeToString(byte_data)
    // byte 转 16进制 的结果
    println(hex_string_data)

    /* ====== 分割线 ====== */

    // 将 16进制的字符串 转换 byte
    hex_data, _ := hex.DecodeString(hex_string_data)
    // 将 byte 转换 为字符串 输出结果
    println(string(hex_data))
}

看到代码,也就明白了为什么会有这么多的文章会写[]byte 与 16进制(String) 的相互转换。首先我们要将字符串装换为16进制的字符串,然后将16进制的字符串转换成16进制的[]byte

当然我们写了字符串转16进制[]byte,想要整数转16进制[]byte也是同样的道理,唯一需要注意的地方是转换的时候有大小端需要考虑

不过在看别人博客的时候,还真看到有人就是要把16进制的字符串手动转换成字节数组,我们可以参考下:

func Hextob(str string)([]byte){ 
	slen:=len(str) 
	bHex:=make([]byte,len(str)/2)
	ii:=0
	for i:=0;i

方法逻辑倒是很简单,无非就是每两个字符串转换为一个byte,但前提也是有16进制的字符串,所以这个方法就当帮助我们学习底层实现的例子吧

 

参考:

https://www.jianshu.com/p/ecda78de1aa0

https://zhuanlan.zhihu.com/p/26808455

你可能感兴趣的:(Golang)