Go语言中如何将Hex十六进制字符串转为字节并对比两个字节序列
解决方案
核心注意点
- Go 变量名不允许使用
-字符,需要替换为驼峰命名或下划线命名等合法格式 - 十六进制值转字节切片可以使用标准库
encoding/hex的DecodeString方法,固定已知的十六进制值也可以直接定义字节切片字面量
实现代码
方式1:从十六进制字符串动态解码
适合十六进制值是动态传入的场景:
package main import ( "bytes" "encoding/hex" "fmt" "log" ) func main() { staticBytes, err := hex.DecodeString("504B0506") if err != nil { log.Fatalf("hex解码失败: %v", err) } staticBytes2, err := hex.DecodeString("504B") if err != nil { log.Fatalf("hex解码失败: %v", err) } fmt.Println(bytes.Contains(staticBytes, staticBytes2)) }
运行后输出true,符合预期的包含关系判定。
方式2:直接定义固定字节切片
适合十六进制值是固定常量的场景,性能更高无需运行时解码:
package main import ( "bytes" "fmt" ) func main() { staticBytes := []byte{0x50, 0x4B, 0x05, 0x06} staticBytes2 := []byte{0x50, 0x4B} fmt.Println(bytes.Contains(staticBytes, staticBytes2)) }
内容的提问来源于stack exchange,提问作者Hysii
相关产品推荐
相关产品推荐

