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

How to add an ASCII value of a byte to an integer in golang?

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

如果您需要从字节流中读取一个整数,最快的方法就是 scan 它与 fmt。示例:

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

在 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 有很好的卫生实践,错误也会得到处理。