package main
import (
"fmt"
"strconv"
)
func main() {
i := make([]byte, 200)
i[0] = '1'
i[1] = '2'
i[2] = '3'
i[3] = '4'
var str = string(i)
fmt.Print(str, "\n") //1234
va, _ := strconv.Atoi(str)
fmt.Print(va) //0
}
为什么是0?
因为后面都是`\0`字符,所以你用`strconv.Atoi`会失败的,推荐使用`gconv`包来实现各种类型转换:https://gfer.me/util/gconv/index
#4
更多评论
strconv.Atoi: parsing "1234\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00": invalid syntax
你为啥不把err打印出来看看?
#1
```
i := make([]byte, 200)
i[0] = '1'
i[1] = '2'
i[2] = '3'
i[3] = '0'
var str = string(i)
invidIndex:=len(str)
for i:=range str {
if byte(str[i])==0{
invidIndex = i
break
}
}
str = str[0:invidIndex]
fmt.Println(str)
va, err := strconv.Atoi(str)
fmt.Println(va,err)
```
纯粹是针对性解决你这问题,实际开发中想不到什么场景会这么用
#2