How to Convert Uint8 to String

How to Convert Uint8 to String

I want to convert uint8 to string but can't figure out how.

  package main

  import "fmt"
  import "strconv"

  func main() {

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

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

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

Any idea?

2

5 Answers

Simply convert it :

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

There is a difference between converting it or casting it, consider:

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

The string cast prints '\n' (newline), the string conversion prints "10". The difference becomes clear once you regard the []byte conversion of both variants:

[]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
2

You can do it even simpler by using casting, this worked for me:

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

There are no automatic conversions of basic types in Go expressions. See . A byte (an alias of uint8) or []byte ([]uint8) has to be set to a bool, number or string.

package main

import (
    . "fmt"
)

func main() {
    b := []byte{'G', 'o'}
    c := []interface{}{b[0], float64(b[0]), int(b[0]), rune(b[0]), string(b[0]), Sprintf("%s", b), b[0] != 0}
    checkType(c)
}

func checkType(s []interface{}) {
    for k, _ := range s {
        // uint8 71, float64 71, int 71, int32 71, string G, string Go, bool true
        Printf("%T %v\n", s[k], s[k])
    }
}

Sprintf("%s", b) can be used to convert []byte{'G', 'o' } to the string "Go". You can convert any int type to a string with Sprintf. See .

But Sprintf uses reflection. See the comment in . Using Itoa (Integer to ASCII) is faster. See @DenysSéguret and . Quotes edited.

1

use %c

    str := "Hello"
    fmt.Println(str[1]) // 101
    fmt.Printf("%c\n", str[1])

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.