You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 20:06:01