胡說(shuō)叔叔
2023-06-19 15:22:51
我已經(jīng)看到多個(gè)將 String 轉(zhuǎn)換為字節(jié)數(shù)組的問題,但我想要的是轉(zhuǎn)換為 byte[]。因此,例如,如果我有a := "68656c6c6f20776f726c64",如果我這樣做[]byte(a),它會(huì)將每個(gè)數(shù)字轉(zhuǎn)換為其十六進(jìn)制值,但我想要的是直接將其直接解釋為十六進(jìn)制,這樣我就有了[]byte b = [68, 65, 6c, etc.]除了迭代字符串和每 2 個(gè)字符將它們附加到 ? 之外,還有其他不同的方法嗎[]byte?
1 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
字符串是一個(gè)字節(jié)數(shù)組。將一個(gè)投射到另一個(gè)得到你所看到的;該字符a
有一個(gè)整數(shù)值(97,或十六進(jìn)制的 61),您將獲得組成字符串的字節(jié)數(shù)組。如果您希望字符串"ff"
變成整數(shù) 255(ff
十六進(jìn)制),那不是轉(zhuǎn)換,而是根據(jù)特定邏輯解析(解碼)字符串(即字符串由十六進(jìn)制數(shù)字的 ASCII 表示組成)。為此,您需要使用適當(dāng)?shù)慕獯a器,即hex.DecodeString
mh-cbon 建議的標(biāo)準(zhǔn)庫(kù):
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 關(guān)注
- 139 瀏覽
添加回答
舉報(bào)
0/150
提交
取消