2012-08-04 19 views
9

Come convertire un grande int in una stringa (o numero intero) in Golang?Converti un bigint in una stringa in Go

bigint := big.NewInt(123) //This is what I have 
bigstr = "123" //This is what I want 
+0

Grazie per il commento pst. Dopo ore di ricerche, direi che la documentazione non è eccezionale su bigints. Ad esempio, non riesco ancora a capire come posso convertire da una stringa a una bigint. – Yster

risposta

19

basta usare il metodo di String: http://golang.org/pkg/math/big/#Int.String

bigint := big.NewInt(123) 
bigstr := bigint.String() 
+0

Grazie per la risposta, cyberdelia. Devo fare una nuova domanda o posso chiederti come convertire il contrario: da una stringa a una bigint? (Ancora una volta, non ho potuto trovare la risposta da nessuna parte). – Yster

+3

@Yster - http://golang.org/pkg/math/big/#Int.SetString – BurntSushi5

+0

@ BurntSushi5 - Grazie mille! Questa è una piccola grande stringa per la grande. Esempio: bigint.SetString ("123", 10) – Yster

0

ho usato il seguente:

bigint := big.NewInt(1231231231231) 
bigstr := fmt.Sprint(bigint) 
+1

Chiamare 'bigint.String()' direttamente (invece che tramite l'interfaccia {} di fmt) è più semplice ed efficiente. L'unica ragione per usare il pacchetto 'fmt' per questo è se si volesse usare una formattazione speciale. –

+0

Ho usato il bigint.String() in un int veramente grande e ottenuto qualcosa come 1.2123423534546e308 – victorsamuelmd

0

hai chiesto come convertire un BIGINT di stringa o a int, la risposta accettata spiega solo come convertire in stringa.

in modo da avere il vostro bigint := big.NewInt(123)


È possibile convertire la bigint per intero in due modi possibili:

  • utilizzando .Int64(). Con yourInt := bigint.Int64()
  • utilizzando .Uint64(). Con yourUint := bigint.Uint64()

Il motivo per due metodi è che uint contiene 2 volte più grandi numeri e talvolta si sa che la risposta è positiva. Attenzione se il numero è maggiore del massimo possibile per int64/uint64:

Se x non può essere rappresentato in un int64, il risultato non è definito.


E per completezza, a convertire in stringa, basta usare .String()bigstr := bigint.String()