2013-10-07 14 views
8

http://play.golang.org/p/BoZkHC8_uAGolang: convertire uint8 a stringa

voglio convertire uint8 a stringa, ma non riesco a capire come.

package main 

    import "fmt" 
    import "strconv" 

    func main() { 

    str := "Hello" 
    fmt.Println(str[1]) // 101 

    fmt.Println(strconv.Itoa(str[1])) 
    } 

Questo mi dà prog.go:11: cannot use str[1] (type uint8) as type int in function argument [process exited with non-zero status]

Qualche idea?

+0

Controllare la prima parte di questa risposta, se siete alla ricerca di informazioni su fette di uint8 ([] uint8): http: //stackoverflow.com/a/28848879/1364759 – Shadoninja

risposta

10

Semplicemente convert it:

fmt.Println(strconv.Itoa(int(str[1]))) 
6

Puoi farlo ancora più semplice utilizzando casting, questo ha funzionato per me:

var c uint8 
c = 't' 
fmt.Printf(string(c)) 
+0

La risposta accettata è corretta. Come spiegato di seguito da @tivio, questo metodo non fa ciò che alcuni potrebbero aspettarsi. – Shadoninja

6

C'è una differenza tra la conversione o il cast, considerare:

var s uint8 = 10 
fmt.Print(string(s)) 
fmt.Print(strconv.Itoa(int(s))) 

La stringa di cast stampa '\ n' (newline), la conversione di string rints "10". La differenza diventa chiaro una volta che si consideri la conversione [] byte di entrambe le varianti:

[]byte(string(s)) == [10] // the single character represented by 10 
[]byte(strconv.Itoa(int(s))) == [49, 48] // character encoding for '1' and '0' 
see this code in play.golang.org
+0

strconv.Itoa (int (s))) - è esattamente quello che stavo cercando per convertire la rappresentazione numerica del valore di byte in stringa – WallTearer