如何将uint8转换为字符串

时间:2013-10-07 11:09:45

标签: go

http://play.golang.org/p/BoZkHC8_uA

我想将uint8转换为字符串,但无法弄清楚如何。

  package main

  import "fmt"
  import "strconv"

  func main() {

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

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

这给了我prog.go:11: cannot use str[1] (type uint8) as type int in function argument [process exited with non-zero status]

有什么想法吗?

6 个答案:

答案 0 :(得分:14)

简单convert it

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

答案 1 :(得分:8)

转换或投射之间存在差异,请考虑:

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

字符串转换打印' \ n' (换行符),字符串转换打印" 10"。一旦您考虑两种变体的[]字节转换,差异就会变得清晰:

[]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 :(得分:6)

你可以使用强制转换更简单,这对我有用:

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

答案 3 :(得分:0)

这将完成工作。

package main

import (
  "crypto/sha1"
  "encoding/hex"
  "fmt"
)

func main() {
  h := sha1.New()
  h.Write([]byte("content"))
  sha := h.Sum(nil)  // "sha" is uint8 type, encoded in base16

  shaStr := hex.EncodeToString(sha)  // String representation

  fmt.Printf("%x\n", sha)
  fmt.Println(shaStr)
}

答案 4 :(得分:0)

Go表达式中没有基本类型的自动转换。参见https://talks.golang.org/2012/goforc.slide#18。必须将byte(别名uint8)或[]byte[]uint8)设置为布尔值,数字或字符串。

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)可用于将[]byte{'G', 'o' }转换为字符串“ Go”。您可以使用Sprintf将任何int类型转换为字符串。参见https://stackoverflow.com/a/41074199/12817546

但是Sprintf使用反射。请参阅https://stackoverflow.com/a/22626531/12817546中的评论。使用Itoa(整数到ASCII)更快。请参见@DenysSéguret和https://stackoverflow.com/a/38077508/12817546。行情已编辑。

答案 5 :(得分:0)

使用>>> from employees.models.sql.employees import Employees setup_schema:employees >>> t = Employees() >>> t id : None (primary key) created_at : None last_updated : None emp_no : None (primary key) birth_date : None first_name : None last_name : None hire_date : None

_use_pow_schema_attrs = False