为了账号安全,请及时绑定邮箱和手机立即绑定

将十六进制值的字符串转换为 []byte 表示

将十六进制值的字符串转换为 []byte 表示

Go
胡说叔叔 2023-06-19 15:22:51
我已经看到多个将 String 转换为字节数组的问题,但我想要的是转换为 byte[]。因此,例如,如果我有a := "68656c6c6f20776f726c64",如果我这样做[]byte(a),它会将每个数字转换为其十六进制值,但我想要的是直接将其直接解释为十六进制,这样我就有了[]byte b = [68, 65, 6c, etc.]除了迭代字符串和每 2 个字符将它们附加到 ? 之外,还有其他不同的方法吗[]byte?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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


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])


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信