byte数组转字符串?

import "crypto/sha256"

func main() {
    c1 := sha256.Sum256([]byte("x"))
    c2 := sha256.Sum256([]byte("X"))
    fmt.Printf("%x\n%x\n%t\n%T\n", c1, c2, c1 == c2, c1)
    // Output:
    // 2d711642b726b04401627ca9fbac32f5c8530fb1903cc4db02258717921a4881
    // 4b68ab3847feda7d6c62c1fbcbeebfa35eab7351ed5e78f4ddadea5df64b8015
    // false
    // [32]uint8
}

fmt包可以输出16进制的字符串,如何直接转成string

已邀请:

蜗牛

赞同来自: SuperFashi simeon philc trume

使用 hex 包.

你这里c1是数组所以用:

hex.EncodeToString(c1[:])

如果是切片可以直接:

hex.EncodeToString(c1)

stevewang

赞同来自: simeon SuperFashi

fmt.Sprintf("%x", c1)

domac - life should be func

赞同来自:

func bytesToString(b []byte) string {
    return *(*string)(unsafe.Pointer(&b))
}

SuperFashi - To code or be coded, that's a question.

赞同来自:

楼上两种方法都没有问题,但是那个指针的不推荐。

要回复问题请先登录注册