我想将一个byte []变量'asic值添加到一个整数。例如,我fisrt读取byte []缓冲区中的所有输入。然后我在其中输出一个数字字符串“123”。然后我可以通过('1' - '0')* 100 +('2' - '0')* 10 +'3' - '0'将其分配给整数。但我无法为整数分配字节变量。我怎么能用任何方式做到这一点?非常感谢你:))
答案 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)
如果您需要从字节流中读取整数,最快的方法就是scan与fmt
。例如:
n := 0
_, err := fmt.Scanf("%d", &n)
if err != nil {
log.Fatal(err)
}
fmt.Printf("you entered %d\n", n)