如何将字节的 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 有很好的卫生实践,错误也会得到处理。
我想要将一个 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 有很好的卫生实践,错误也会得到处理。