2 回答

TA貢獻1856條經(jīng)驗 獲得超11個贊
我在模塊中找不到任何hex可以實現(xiàn)您想要的功能。但是,我們可以使用自定義緩沖區(qū)以我們想要的格式寫入。
package main
import (
"bytes"
"fmt"
)
func main() {
originalBytes := []byte("go")
result := make([]byte, 4*len(originalBytes))
buff := bytes.NewBuffer(result)
for _, b := range originalBytes {
fmt.Fprintf(buff, "0x%02x ", b)
}
fmt.Println(buff.String())
}
可運行示例: https: //goplay.space/#fyhDJ094GgZ

TA貢獻1777條經(jīng)驗 獲得超10個贊
這是一個產(chǎn)生問題中指定的結(jié)果的解決方案。具體來說,每個字節(jié)之間有一個“,”,并且沒有尾隨空格。
p := []byte("go")
var buf strings.Builder
if len(p) > 0 {
buf.Grow(len(p)*6 - 2)
for i, b := range p {
if i > 0 {
buf.WriteString(", ")
}
fmt.Fprintf(&buf, "0x%02x", b)
}
}
result := buf.String()
strings.Builder類型用于避免在最終轉(zhuǎn)換為字符串時分配內(nèi)存。另一個答案使用 bytes.Buffer 在這一步分配內(nèi)存。
構(gòu)建器的初始大小足以容納每個字節(jié)和分隔符的表示。另一個答案忽略了分隔符的大小。
- 2 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報