2013-10-07 16 views
8

http://play.golang.org/p/BoZkHC8_uAGolang: convert uint8 bespannen

I uint8 bespannen konvertieren möchten, kann aber nicht herausfinden, wie.

package main 

    import "fmt" 
    import "strconv" 

    func main() { 

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

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

Das gibt mir prog.go:11: cannot use str[1] (type uint8) as type int in function argument [process exited with non-zero status]

Jede Idee?

+0

den ersten Teil dieser Antwort Überprüfen Sie, ob Sie sich für Informationen über Scheiben uint8 suchen ([] uint8): http: //stackoverflow.com/a/28848879/1364759 – Shadoninja

Antwort

10

Einfach convert it:

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

Sie tun können, es noch einfacher durch Gießen, das für mich gearbeitet:

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

Akzeptierte Antwort ist korrekt. Wie @tivio unten erklärt, macht diese Methode nicht das, was manche erwarten würden. – Shadoninja

6

Es gibt einen Unterschied zwischen dem Konvertieren oder Gießen berücksichtigen:

Die Zeichenkette Cast '\ n' (Newline), die String-Konvertierung p rints "10". Der Unterschied wird deutlich, wenn man die [] Byte Umwandlung beider Varianten betrachten:

[]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))) - ist genau das, was ich suchte, um numerische Darstellung von Byte-Wert in Zeichenfolge zu konvertieren – WallTearer