登录
首页 >  Golang >  Go问答

将十六进制字符串转换为字节数据

来源:stackoverflow

时间:2024-03-05 16:54:17 492浏览 收藏

从现在开始,努力学习吧!本文《将十六进制字符串转换为字节数据》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我看到了多个将 String 转换为字节数组的问题,但我想要的是转换为 byte[]。 例如,如果我有 a := "68656c6c6f20776f726c64",如果我执行 []byte(a) ,它会将每个数字转换为其十六进制值,但我想要的是它直接解释为十六进制直接,这样我就有 []byte b = [68, 65, 6c, etc.]

是否有其他方法可以迭代字符串并每 2 个字符将它们附加到 []byte


解决方案


字符串字节数组。将其中一个投射到另一个上即可得到您所看到的效果;字符 a 具有整数值(97 或十六进制的 61),并且您将获得组成字符串的字节数组。如果您希望字符串 "ff" 变成整数 255(十六进制的 ff),这不是转换,而是根据特定逻辑解析(解码)字符串(即字符串由十六进制的 ascii 表示组成)数字)。为此,您需要使用适当的解码器,即 mh-cbon 建议的标准库的 hex.DecodeString

src := []byte("68656c6c6f20776f726c64")

dst := make([]byte, hex.DecodedLen(len(src)))
n, err := hex.Decode(dst, src)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%s\n", dst[:n])

到这里,我们也就讲完了《将十六进制字符串转换为字节数据》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>