我已经看到多个将String转换为字节数组的问题,但是我想要转换为byte []。
例如,如果我有a := "68656c6c6f20776f726c64"
,如果我有[]byte(a)
,它将把每个数字转换成它的十六进制值,但是我想要的是直接将其直接解释为十六进制,这样我有[]byte b = [68, 65, 6c, etc.]
除了迭代字符串和将每2个字符附加到[]byte
之外,还有其他方法吗?
答案 0 :(得分:0)
字符串是字节数组。将一个投向另一个可以得到您所看到的;字符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])