猿问

在 Go 中将 int 转换为单个字节

https://github.com/tarm/serial/blob/master/serial.go#L103


type StopBits byte

type Parity byte


type Config struct {

    Name        string

    Baud        int

    ReadTimeout time.Duration

    Size byte

    Parity Parity

    StopBits StopBits

}

我正在尝试标记命令行并填写配置结构,但我不知道如何从 int 或 string 转到单个字节?


示例尺寸 7


试过了


mysize := "7"

mysize[0]

但随后 tarm/serial 告诉我 serial.Config 中的输入错误无效


i, err := strconv.Atoi("7")

编译器抱怨我做不到 i.(byte)


我可以使它工作的唯一方法是size: 7在配置结构中进行硬编码。


30秒到达战场
浏览 119回答 3
3回答

桃花长相依

您可以将 int 转换为字节:https : //play.golang.org/p/w0uBGiYOKPval := "7"i, _ := strconv.Atoi(val)byteI := byte(i)fmt.Printf("%v (%T)", byteI, byteI)编译器抱怨我不能做 i.(byte)当然,因为这是一种说法,它就会如果失败,i是不是给定类型的(byte在你的例子),或者它不是一个接口。

翻过高山走不出你

为了使用类型断言(您正在这样做),您需要在左侧有一个接口。您可能会收到“左侧非接口类型字节”的错误 - 这是真的,因为您已经知道类型。相反,你应该铸造。您需要使用 byte(i) 而不是 i.(byte):i := 12c := byte(i)fmt.Println(c) //12当您的 int 超过一个字节可以容纳的最大 int 时要小心;你最终会溢出字节。在这种情况下,如果超过 255(单个字节最多可以容纳),就会溢出。

繁华开满天机

 str := "Hello"    var b byte    for i,_ := range str{        b = str[i]        fmt.Println(b)    }
随时随地看视频慕课网APP

相关分类

Go
我要回答