2014-09-27 11 views
5

Ich habe eine Größe Byte-Array, das ich nach md5.Sum() gemacht habe.Wie konvertiere ich [Größe] Byte in Go in String?

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

ich den Fehler:

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

+3

Ich möchte darauf hinweisen, dass die Schaffung eines solchen Passwort ohne jede Art von Salz ist extrem unsicher und eine schlechte Idee. – OneOfOne

Antwort

14

Sie es als eine Scheibe verweisen:

pass = string(b[:]) 
4

Machen Sie ein Stück davon:

pass = string(b[:]) 
10

Etwas spät, aber bedenken Sie, dass die Verwendung von string(b[:]) mos drucken wird tly ungültige Zeichen.

Wenn Sie versuchen, eine hexadezimale Darstellung davon, wie PHP bekommen Sie so etwas wie verwenden können:

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

Mit 'string (b [:])' wird nichts gedruckt. – rightfold

+0

@rightfold Ich meinte, wenn Sie versuchen, die resultierende Zeichenfolge zu drucken. – OneOfOne

+0

Hängt davon ab, wie Sie es drucken. – rightfold

0

es gelöst werden kann, die von diesem

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

oder

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

das wird es zu base64 string

Verwandte Themen