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,00o 的基数是 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, 定期推送最新随笔

    分类:
    阅读
    标签: