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

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

除了迭代字符串和每 2 个字符将它们附加到 ? 之外,还有其他不同的方法吗[]byte


胡说叔叔
浏览 104回答 1
1回答

Smart猫小萌

字符串是一个字节数组。将一个投射到另一个得到你所看到的;该字符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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go