Golang字符串到uint
在我的项目中,ID被设计为snowflakeid。前端向我传递一个字符串,数据库存储为bigint。这意味着在存储它之前,需要将其转换为uint。请告诉我怎么办? 演示数据:Golang字符串到uint,go,Go,在我的项目中,ID被设计为snowflakeid。前端向我传递一个字符串,数据库存储为bigint。这意味着在存储它之前,需要将其转换为uint。请告诉我怎么办? 演示数据: m := "156343853366906880" 我的代码: 预期的结果是准确的,并且不会丢失准确性。strconv.parseUint()的第三个参数是位大小。19位不足以表示数字15634853366906880。因此,该方法返回一个错误。(通过将其分配给,您将忽略该选项) 2^19-1=5
m := "156343853366906880"
我的代码:
预期的结果是准确的,并且不会丢失准确性。
strconv.parseUint()的第三个参数是位大小。19位不足以表示数字15634853366906880
。因此,该方法返回一个错误。(通过将其分配给
,您将忽略该选项)
2^19-1=524287是可以用19位表示的最大无符号数
以位大小传递64:
m := "156343853366906880"
u, err := strconv.ParseUint(m, 0, 64)
if err == nil {
fmt.Print(u)
//156343853366906880
}
如果您的数字将大于uint64
请使用big.Int
:
是基于时间的64位唯一id。由于需要将字符串转换为64位数字,strconv.ParseUint()
非常好。参见,参考号为
在代码中,使用19作为位大小。不要将其与前端字符串表示的整数(无符号)中的位数混用
要将64位雪花ID(字符串)转换为64位无符号整数,请使用64作为位大小参数
U,err:=strvonv.ParseUint(s,0,64)
如果出错!=零{
//处理错误。。。
}
当错误真的很重要时,也不要试图忽略它
你还没问问题。对不起,这是我的问题,我的英语不好
m := "156343853366906880"
_, err := strconv.ParseUint(m, 0, 19)
fmt.Println(err)
//strconv.ParseUint: parsing "156343853366906880": value out of range 524287
m := "156343853366906880"
u, err := strconv.ParseUint(m, 0, 64)
if err == nil {
fmt.Print(u)
//156343853366906880
}