为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
30秒到达战场 2022-01-10 16:25:34
https://github.com/tarm/serial/blob/master/serial.go#L103type StopBits bytetype Parity bytetype 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在配置结构中进行硬编码。
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您可以将 int 转换为字节:https : //play.golang.org/p/w0uBGiYOKP


val := "7"

i, _ := strconv.Atoi(val)

byteI := byte(i)

fmt.Printf("%v (%T)", byteI, byteI)

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


当然,因为这是一种说法,它就会如果失败,i是不是给定类型的(byte在你的例子),或者它不是一个接口。


查看完整回答
反对 回复 2022-01-10
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

为了使用类型断言(您正在这样做),您需要在左侧有一个接口。您可能会收到“左侧非接口类型字节”的错误 - 这是真的,因为您已经知道类型。相反,你应该铸造。


您需要使用 byte(i) 而不是 i.(byte):


i := 12

c := byte(i)

fmt.Println(c) //12

当您的 int 超过一个字节可以容纳的最大 int 时要小心;你最终会溢出字节。在这种情况下,如果超过 255(单个字节最多可以容纳),就会溢出。


查看完整回答
反对 回复 2022-01-10
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

 str := "Hello"

    var b byte

    for i,_ := range str{

        b = str[i]

        fmt.Println(b)

    }


查看完整回答
反对 回复 2022-01-10
  • 3 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信