Go语言中通过encoding/hex包实现十六进制编码解码,hex.EncodeToString将字节切片转为小写十六进制字符串,如”hello”转为”68656c6c6f”;hex.DecodeString将十六进制字符串还原为原始字节数据,输入需为偶数长度且仅含0-9、a-f、A-F字符,否则报错。

在Go语言中,处理十六进制(hex)编码和解码非常常见,尤其是在操作二进制数据、加密、网络传输等场景中。Go标准库 encoding/hex 提供了完整的API来实现字节流与十六进制字符串之间的相互转换。
hex编码:将二进制数据转为十六进制字符串
使用 hex.EncodeToString() 可以将字节切片转换为小写十六进制字符串。
data := []byte("hello")hexStr := hex.EncodeToString(data)fmt.Println(hexStr) // 输出: 68656c6c6f
该函数返回的是十六进制表示的字符串,每个字节用两个字符表示,例如 ‘h’ 的ASCII码是0x68,所以结果以”68″开头。
hex解码:将十六进制字符串还原为二进制数据
使用 hex.DecodeString() 可将十六进制字符串解析回原始字节切片。
立即学习“go语言免费学习笔记(深入)”;
hexStr := "68656c6c6f"data, err := hex.DecodeString(hexStr)if err != nil { log.Fatal("解码失败:", err)}fmt.Printf("%sn", data) // 输出: hello
注意:输入字符串必须是合法的十六进制字符(0-9, a-f, A-F),长度必须为偶数,否则会返回错误。
手动编码/解码(了解原理)
虽然标准库足够使用,但理解底层逻辑有助于调试。例如,一个字节拆成高4位和低4位,分别映射到hex字符。
// 简化版编码逻辑示意func toHexChar(b byte) byte { b = b & 0xf if b < 10 { return '0' + b } return 'a' + b - 10}
实际中无需手动实现,但知道原理有助于处理边界问题,比如大小写、补零等。
常见问题与注意事项
hex字符串不区分大小写,DecodeString 支持”abc”或”ABC”编码结果默认为小写,如需大写可用 strings.ToUpper() 转换确保输入数据长度为偶数,奇数长度会返回错误空字符串解码返回空切片,不会报错
基本上就这些。标准库的 encoding/hex 简单可靠,适合大多数场景。只要注意输入合法性,编解码过程基本不会出错。
以上就是Golang hex十六进制编解码 二进制转换的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1403236.html
微信扫一扫
支付宝扫一扫