s := strconv.Itoa(97) // s == "97"
警告:在普通转换中,该值将解释为 Unicode 码位,并且生成的字符串将包含该码位表示的字符,并以 UTF-8 编码。
s := string(97) // s == "a"
使用 strconv.FormatInt 以给定的进制数(十进制、十六进制)格式化 int64。
var n int64 = 97
s := strconv.FormatInt(n, 10) // s == "97" (十进制)
复制代码
var n int64 = 97
s := strconv.FormatInt(n, 16) // s == "61" (十六进制)
复制代码
字符串转 int/int64
使用 strconv.Atoi 将十进制字符串解析为 int 。
s := "97"
if n, err := strconv.Atoi(s); err == nil {
fmt.Println(n+1)
} else {
fmt.Println(s, "is not an integer.")
// Output: 98
复制代码
使用 strconv.ParseInt 解析一个十进制字符串(以10为基数),并检查其是否适合 int64。
s := "97"
n, err := strconv.ParseInt(s, 10, 64)
if err == nil {
fmt.Printf("%d of type %T", n, n)
// Output: 97 of type int64
复制代码
func ParseInt(s string, base int, bitSize int) (i int64, err error)
复制代码
两个数字参数表示一个基数(0、2 到 36)和一个占位大小(0 到 64)。
如果第一个参数为 0,则字符串的前缀隐含基数:0b
的基数为 2,0
或 0o
的基数是 8,0x
的基数为 16,否则为 10。
第二个参数指定结果必须适合的整数类型。占位大小 0、8、16、32 和 64 对应于 int,int8,int16,int32 和 int64。
int 和 int64 互转
一个 int 的大小是基于操作系统特定实现的,它可能是 32 位,也可能是 64 位,因此从 int 转换为 int64 时,您不会丢失任何信息。
var n int = 97
m := int64(n) // safe
但是,当转换为较短的整数类型时,该值将被截断以适合结果类型的大小。
var m int64 = 2 << 32
n := int(m) // truncated on machines with 32-bit ints
fmt.Println(n) // either 0 or 4,294,967,296
有关计算 int 大小的代码,请参见 Maximum value of an int。
最佳实践 Pick the right one: int vs. int64。
通用格式化(宽度,缩进,符号)
fmt.Sprintf 函数是将数据转换为字符串的好用工具:
s := fmt.Sprintf("%+8d", 97)
// s == " +97" (width 8, right justify, always show sign)
扫描下方二维码,关注Feed
, 定期推送最新随笔