簡體   English   中英

Go中的大字符串?

[英]string to big Int in Go?

有沒有辦法將字符串(實質上是一個龐大的數字)從字符串轉換為Go中的Big int?

我試着先把它轉換成字節數組

array := []byte(string)

然后將數組轉換為BigInt。

我認為這很有效,但輸出與原始輸入不同。 所以我猜測轉換由於某種原因沒有做正確的事情。

我正在處理的數字超過300位數,所以我認為我不能使用常規int。

有什么最佳方法的建議嗎?

包大

import "math/big"

func(* Int)SetString

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM