2 回答
TA贡献1856条经验 获得超11个赞
我在模块中找不到任何hex可以实现您想要的功能。但是,我们可以使用自定义缓冲区以我们想要的格式写入。
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条经验 获得超10个赞
这是一个产生问题中指定的结果的解决方案。具体来说,每个字节之间有一个“,”,并且没有尾随空格。
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类型用于避免在最终转换为字符串时分配内存。另一个答案使用 bytes.Buffer 在这一步分配内存。
构建器的初始大小足以容纳每个字节和分隔符的表示。另一个答案忽略了分隔符的大小。
- 2 回答
- 0 关注
- 144 浏览
添加回答
举报