如何在golang中将字节的ASCII值添加到整数?

时间:2016-09-12 16:15:04

标签: go byte ascii string-conversion

我想将一个byte []变量'asic值添加到一个整数。例如,我fisrt读取byte []缓冲区中的所有输入。然后我在其中输出一个数字字符串“123”。然后我可以通过('1' - '0')* 100 +('2' - '0')* 10 +'3' - '0'将其分配给整数。但我无法为整数分配字节变量。我怎么能用任何方式做到这一点?非常感谢你:))

2 个答案:

答案 0 :(得分:2)

在go中,你可以使用string()强制将字节数组转换为字符串,然后在其上使用strconv.Atoi。据推测,您还希望使用切片操作来仅隔离要转换的输入部分。

package main

import (
    "strconv"
    "fmt"
)

func main() {
    data := []byte { 0x20, 0x31, 0x32, 0x33, 0x20 } // Embedded number
    // string(...) coercion yields a string from a byte buffer
    // Number starts at char 1, ends before char 4
    str := string(data[1:4])
    i, err := strconv.Atoi(str)
    if err != nil {
        fmt.Printf("Error %v\n", err)
        return
    }

    fmt.Printf("value %v\n", i)
}

打印

value 123

由于go具有很好的卫生实践,因此也会处理错误。

答案 1 :(得分:0)

如果您需要从字节流中读取整数,最快的方法就是scanfmt。例如:

n := 0
_, err := fmt.Scanf("%d", &n)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("you entered %d\n", n)