dongmai6666 2015-10-14 16:37

# 在golang中将字符串转换为数字

Golang has strconv library that converts string to int64 and uint64.

However, the rest of integer data types seems to be unsupported as I can't find conversion functions for byte, int16, uint16, int32, uint32 data types.

One can always convert from byte, 16-bit and 32-bit data types to int64 and uint64 without loss of precision. Is that what's intended by language?

• 写回答

#### 3条回答默认 最新

• duanju7199 2015-10-14 16:41
关注

If you look at the docs a bit more closely you can use this method;

``````func ParseInt(s string, base int, bitSize int)
``````

https://golang.org/pkg/strconv/#ParseInt

The `bitSize` argument says how large the int is so you can do `8` or `16` or `32` for those smaller integer types. `Atoi` calls this internally. I believe you're wanting `10` for the `base` argument. So like `b, err := strconv.ParseInt("5", 10, 8)` for a byte.

EDIT: Just going to add a couple things to the answer here in case the OP is in fact confused how to convert a 16-bit int into a string... If that is your intended goal just use `fmt.Sprintf` or you can do a conversion from smaller int to larger int as it will always succeed. Examples of both here; https://play.golang.org/p/UWSVxEmQ1N

``````package main

import "fmt"
import "strconv"

func main() {
var a int16
a = 5
s := fmt.Sprintf("%d", a)
s2 := strconv.Itoa(int(a))
fmt.Println(s)
fmt.Println(s2)
}
``````
本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 师哥师姐们，如何帮我下载一下python？
• ¥15 Office版本升级，Oracle连接报错
• ¥20 利用python搜索PDF文件中是否存在1
• ¥15 ImportPathMismatchError
• ¥15 滤波器这个效果是对的么
• ¥15 c++静态函数的静态函数参数问题
• ¥15 51单片机数码管显示有问题
• ¥30 delphi 10 seattle 调https
• ¥200 有哪位师傅可以教我做出telegraf平台的骰子插件？重酬。
• ¥85 3559A sensor时间同步