2014-07-22 17 views
13

Ho bisogno di convertire un uint32 in stringa. Come lo posso fare . strconv.Itoa non sembra funzionare. Long store: Ho bisogno di convertire un UID ricevuto tramite il pacchetto imap in stringa in modo che possa essere impostato successivamente in una sequenza. Come nota a margine, mi chiedo perché tali conversioni siano difficili in Go. Un cast string(t) avrebbe potuto essere molto più facileCome convertire uint32 in stringa?

+0

itoa non funziona con uint32 // codice UIDI: = imap.AsNumber (rsp.MessageInfo(). UID) – hey

risposta

22

vorrei semplicemente utilizzare sprintf o anche solo Sprint:

var n uint32 = 42 
str := fmt.Sprint(n) 
println(str) 

Go è fortemente tipizzato. La trasmissione di un numero direttamente a una stringa non avrebbe senso. Pensa a C dove stringa è char * che è un puntatore alla prima lettera della stringa terminata da \0. Il cast di un numero in una stringa comporterebbe il puntatore della prima lettera sull'indirizzo del numero, il che non ha senso. Questo è il motivo per cui è necessario convertire "attivamente".

21

vorrei farlo usando strconv.FormatUint:

import "strconv" 

var u uint32 = 17 
var s = strconv.FormatUint(uint64(u), 10) 
// "17" 

Nota che il parametro previsto è uint64, quindi bisogna lanciare la vostra uint32 prima. Non esiste una specifica funzione FormatUint32.