[英]string to big Int in Go?
有沒有辦法將字符串(實質上是一個龐大的數字)從字符串轉換為Go中的Big int?
我試着先把它轉換成字節數組
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的值未定義,但返回的值為nil。
基本參數必須為0或介於2和MaxBase之間的值。 如果base為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
請參閱示例,了解字符串到大型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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.