2014-07-22 16 views
13

Bir uint32 dizgiye dönüştürmem gerekiyor. Bunu nasıl yapabilirim . strconv.Itoa işe yaramıyor. Uzun mağaza: İmap paketinden alınan bir UID'yi diziye dönüştürmem gerekiyor, böylece daha sonra bir sıraya ayarlayabiliyorum. Yan not olarak, Go’da bu tür dönüşümlerin neden zor olduğunu merak ediyorum. Bir döküm string(t)Nasıl uint32 dizeye dönüştürmek için?

+0

itoa, uint32 // code ile çalışmaz UIDI: = imap.AsNumber (rsp.MessageInfo(). UID) – hey

cevap

22

Sadece sprintf'i hatta sadece Sprint kullanırsınız:

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

Git kuvvetle yazıldığında. Bir sayıyı doğrudan bir diziye dökmek mantıklı olmaz. Dizin, \0 tarafından sonlandırılan dizenin ilk harfine bir işaretçi olan char * dizgisi olan C'yi düşünün. Bir dizgiye bir sayı yazmak, ilk harf göstergesinin, sayının adresine sahip olmasına neden olur; bu, anlamlı değildir. Bu yüzden "aktif olarak" dönüştürmeniz gerekiyor.

21

Ben strconv.FormatUint kullanarak bu yapacağını çok daha kolay olabilirdi: beklenen parametre uint64 olduğunu

import "strconv" 

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

Not göre, kendi uint32 ilk döküm zorunda. Belirli bir FormatUint32 işlevi yoktur.

İlgili konular