【发布时间】:2022-11-14 16:09:11
【问题描述】:
我正在尝试将 big.Int 拆分为多个 int64s,以便每个都是较大数字的一部分,标准偏移量为 18 位。例如,给定以下输入值1234512351234088800000999,我希望得到以下输出:[351234088800000999, 1234512]。
我已经知道我可以这样做以获得我想要的结果:
func Split(input *big.Int) []int64 {
asStr := input.Text(10)
strLen := len(asStr)
length := int(math.Ceil(float64(strLen) / 18))
ints := make([]int64, length)
for i := 1; i <= length; i++ {
start := strLen - (i * 18)
end := start + 18
if start < 0 {
start = 0
}
ints[i-1], _ = strconv.ParseInt(asStr[start:end], 10, 64)
}
return ints
}
但是,我不喜欢使用字符串解析的想法,也不喜欢使用strconv。有没有办法直接使用big.Int 来做到这一点?
【问题讨论】:
标签: go