如何将[] byte转换为C十六进制格式0x…?

问题描述 投票:2回答:1

func main() {
    str := hex.EncodeToString([]byte("go"))
    fmt.Println(str)
}

此代码返回676f。如何打印类似C的0x67, 0x6f

go
1个回答
0
投票

我在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

© www.soinside.com 2019 - 2024. All rights reserved.