2014-09-27 43 views
5

我在做md5.Sum()后得到了一个大小的字节数组。如何在Go中将[Size]字节转换为字符串?

data := []byte("testing") 
var pass string 
var b [16]byte 
b = md5.Sum(data) 
pass = string(b) 

我得到的错误:

cannot convert b (type [16]byte) to type string

+3

我想指出,创建一个没有任何种类的盐的密码是非常不安全和一个坏主意。 – OneOfOne 2014-09-27 18:54:16

回答

14

你可以称其为一个切片:

pass = string(b[:]) 
10

小但请记住,使用string(b[:])将打印mos tly无效的字符。

如果你想获得它像PHP中的十六进制表示,你可以使用类似:

data := []byte("testing") 
b := md5.Sum(data) 

//this is mostly invalid characters 
fmt.Println(string(b[:])) 

pass := hex.EncodeToString(b[:]) 
fmt.Println(pass) 
// or 
pass = fmt.Sprintf("%x", b) 
fmt.Println(pass) 

playground

+0

使用'string(b [:])'不会打印任何东西。 – rightfold 2014-09-29 12:54:59

+0

@rightfold我的意思是如果你试图打印结果字符串。 – OneOfOne 2014-09-29 13:29:54

+0

取决于您打印的方式。 – rightfold 2014-09-29 13:45:10

0

它可以通过这个

pass = fmt.Sprintf("%x", b) 

或得到解决

import "encoding/base64" 
pass = base64.StdEncoding.EncodeToString(b[:]) 

这将编码到base64字符串

相关问题