首页 > 解决方案 > Golang 字符串到 uint

问题描述

在我的项目中,ID 被设计为雪花。前端传一个字符串给我,数据库存储是bigint。这意味着在我存储它之前,它需要转换为 uint。请告诉我该怎么办?演示数据:

m := "156343853366906880"

我的代码:
u, _ := strconv.ParseUint(m, 0, 19)

预期的结果是准确的,不会失去准确性

标签: go

解决方案


的第三个参数strconv.parseUint()bitSize。19 位不足以代表数字156343853366906880。因此该方法返回错误。(您通过将其分配给 忽略它_

m := "156343853366906880"
_, err := strconv.ParseUint(m, 0, 19)
fmt.Println(err)
//strconv.ParseUint: parsing "156343853366906880": value out of range 524287

2^19 - 1 = 524287 是可以用 19 位表示的最大无符号数。

将 64 作为 bitSize 传递:

m := "156343853366906880"
u, err := strconv.ParseUint(m, 0, 64)
if err == nil {
    fmt.Print(u)
    //156343853366906880
}

如果您的号码将大于uint64使用big.Int

字符串到 Go 中的大 Int?


推荐阅读