如何将uint8转换为字符串

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

我要UINT8转换为字符串,但无法弄清楚如何。</ p>

 <代码>包主

进口 “FMT”
导入 “STRCONV”

FUNC主(){

STR:= “你好”
fmt.Println(STR [1])// 101

fmt.Println(strconv.Itoa(STR [1]))\ N}
</代码> </ PRE>

这使我<代码 > prog.go:11:不能使用STR [1](式UINT8)用作int类型在功能参数
[过程退出非零状态] </代码> </ p>

任何 想法?</ p>
</ div>

展开原文

原文

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]

有其他任何想法吗?

douyi1084
douyi1084 如果您要查找有关uint8([]uint8)切片的信息,请检查此答案的第一部分:stackoverflow.com/a/28848879/1364759
大约 4 年之前 回复

4个回答



只需将其转换 :</ p>

  fmt.Println(strconv.Itoa(int(str [1])))
</ code> </ pre>
</ DIV>

展开原文

原文

Simply convert it :

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



转换或强制转换之间有区别,请考虑:</ p>

  var  s uint8 = 10 
fmt.Print(字符串)
fmt.Print(strconv.Itoa(int(s)))
</ code> </ pre>

字符串强制转换打印 '
'(换行符),字符串转换输出“ 10”。 一旦考虑到两个变体的[] byte转换,区别就变得很明显:</ p>

  [] byte(string(s))== [10] //表示的单个字符 通过10 
[] byte(strconv.Itoa(int(s)))== [49,48] //字符编码为'1'和'0'
</ code> </ pre>
\ n 在play.golang.org
</ div>中查看此代码

展开原文

原文

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 ' ' (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

duangu6431
duangu6431 转换和转换之间有区别。 但是在Go中,无法进行投射。 Go中只能进行转换。
一年多之前 回复
dsyak22488
dsyak22488 strconv.Itoa(int(s)))-正是我想要将字节值的数字表示形式转换为字符串的内容
4 年多之前 回复



您可以使用强制转换,甚至更简单,这对我有用:</ p>

  var c uint8 
c ='t'
fmt.Printf(string(c))
</ code> </ pre>
</ div>

展开原文

原文

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

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

doujiling4377
doujiling4377 使用string(c)进行强制转换是Go中的一种hack,可能很快就会删除。 参见Rob Pikes对Reddit上问题的回答
大约 2 年之前 回复
dongxu2398
dongxu2398 接受的答案是正确的。 就像@tivio在下面解释的那样,此方法无法实现某些期望。
大约 4 年之前 回复



这将完成此工作。</ p>

 < 代码>包main 

import(
“ crypto / sha1”
“ encoding / hex”
“ fmt”

func main(){
h:= sha1.New()
h.Write([] byte(“ content”))
sha:= h.Sum(nil)//“ sha”是uint8类型,以base16编码

shaStr:= hex.EncodeToString(sha)/ /字符串表示形式

fmt.Printf(“%x
”,sha)
fmt.Println(shaStr)
}

</ code> </ pre>
</ div>

展开原文

原文

This will do the job.

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
", sha)
  fmt.Println(shaStr)
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问