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]
有什么想法吗?
答案 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