Go中的整數到字符串的轉換

在Go語言中,我們經常需要將整數轉換爲字符串。然而,直接使用string()函數進行轉換可能會導致意想不到的結果。這是因爲string()函數會將整數解釋爲Unicode字符的代碼點,而不是將其轉換爲對應的數字字符串。

錯誤的轉換方式

例如,如果我們嘗試將整數65轉換爲字符串:

s := string(65)
fmt.Println(s)  // 輸出:A
 
 

這裏,string(65)並沒有返回我們期望的"65",而是返回了"A"。這是因爲65是大寫字母A的Unicode代碼點。

如果我們嘗試將一個非法的Unicode代碼點轉換爲字符串,例如string(0x110000),Go會返回一個包含Unicode替代字符(U+FFFD,對應於UTF-8編碼的"\xEF\xBF\xBD")的字符串,因爲0x110000超出了Unicode的有效範圍(0x0到0x10FFFF)。

正確的轉換方式

在Go中,將整數轉換爲字符串的正確方式是使用fmt.Sprintfstrconv.Itoa(對於整數)或strconv.FormatUint(對於無符號整數)。例如:

s := fmt.Sprintf("%d"65)
fmt.Println(s)  // 輸出:65
 

或者:

 
s := strconv.Itoa(65)
fmt.Println(s)  // 輸出:65
 

對於無符號整數,我們可以使用strconv.FormatUint

 
s := strconv.FormatUint(6510)
fmt.Println(s)  // 輸出:65
 
 
 
 

這些函數都會將整數轉換爲其十進制字符串表示。

結論

在Go中,我們應該避免使用string()函數將整數轉換爲字符串,因爲它會將整數解釋爲Unicode字符的代碼點。相反,我們應該使用fmt.Sprintfstrconv.Itoastrconv.FormatUint來進行轉換,這些函數會將整數轉換爲其十進制字符串表示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章