我已经看到多个将 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.DecodeString
mh-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])
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消