有沒有辦法將字符串(實質上是一個巨大的數字)從字符串轉換爲Go中的Big int?字符串到大詮釋在Go?
我試圖首先將它轉換成字節陣列
array := []byte(string)
然後陣列轉換成BigInt有。
我認爲工作,但是,輸出是不同於原來的輸入。所以我猜測這個轉換由於某種原因沒有做正確的事情。
我正在處理的數字超過300位數字,所以我不認爲我可以使用常規int。
什麼是最好的方法對此有什麼建議?
有沒有辦法將字符串(實質上是一個巨大的數字)從字符串轉換爲Go中的Big int?字符串到大詮釋在Go?
我試圖首先將它轉換成字節陣列
array := []byte(string)
然後陣列轉換成BigInt有。
我認爲工作,但是,輸出是不同於原來的輸入。所以我猜測這個轉換由於某種原因沒有做正確的事情。
我正在處理的數字超過300位數字,所以我不認爲我可以使用常規int。
什麼是最好的方法對此有什麼建議?
import "math/big"
func (z *Int) SetString(s string, base int) (*Int, bool)
的SetString設置z爲s的值,在給定的基解釋,並且 返回z和一個布爾值,指示成功。整個字符串(不是 只是一個前綴)必須對成功有效。如果SetString失敗,則z的 值未定義,但返回值爲零。
基本參數必須是0或介於2和MaxBase之間的值。如果 基數爲0,則字符串前綴將確定實際的轉換基數。 「0x」或「0X」的前綴「 」選擇基址16;中的「0」前綴選擇基座8, 和「0B」或「0B」前綴選擇基地2。否則所選擇的基礎是 10.
例如,
package main
import (
"fmt"
"math/big"
)
func main() {
n := new(big.Int)
n, ok := n.SetString("314159265358979323846264338327950288419716939937510582097494459", 10)
if !ok {
fmt.Println("SetString: error")
return
}
fmt.Println(n)
}
遊樂場: https://play.golang.org/p/ZaSOQoqZB_
輸出:
314159265358979323846264338327950288419716939937510582097494459
見Example用於字符串大int轉換。
package main
import (
"fmt"
"log"
"math/big"
)
func main() {
i := new(big.Int)
_, err := fmt.Sscan("18446744073709551617", i)
if err != nil {
log.Println("error scanning value:", err)
} else {
fmt.Println(i)
}
}
輸出:
18446744073709551617