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 对象代号: , 表单: 不存在!
• ¥15 WebSocket的问题
• ¥15 WebSocket的问题
• ¥15 centos上启动kylin后网页报错404
• ¥20 使用hackrf进行信号收发时接收到的信号幅度太小
• ¥15 WebSocket的问题
• ¥15 BDSBAS-B1C和B1C信号有什么不同
• ¥15 在半圆平面内随机生成点坐标
• ¥15 系统容量变化的几种多址方式TDMA, CDMA,FDMA,OFDMA 对比，应该给的是一个曲线 图，随着系统容量的增加，几种多址方式性能的对比 图,MATLAB程序仿真折线图
• ¥15 用visual Studio 写c ++只运行上一个旧代码的运行结果是怎么回事