-2
我有一個簡短的程序,將幾個二進制數轉換成它們的ASCII等價物。我今天嘗試將其轉換爲go,發現strconv.Itoa()
無法正常工作。字符串()做我希望strconv.Itoa()會做
// translate Computer History Museum t-shirt
// http://i.ebayimg.com/images/g/qksAAOSwaB5XjsI1/s-l300.jpg
package main
import (
"fmt"
"strconv"
)
func main() {
var binaryStrings [3]string
binaryStrings = [3]string{"01000011","01001000","01001101"}
for _,bin := range binaryStrings {
if decimal, err := strconv.ParseInt(bin, 2, 64); err != nil {
fmt.Println(err)
} else {
letter := strconv.Itoa(int(decimal))
fmt.Println(bin, decimal, letter, string(decimal))
}
}
}
其輸出
$ go run chm-tshirt.go
01000011 67 67 C
01001000 72 72 H
01001101 77 77 M
所以好像string()
是做什麼的我以爲strconv.Itoa()
會做。我期待第三欄顯示我在第四欄中的內容。這是一個錯誤還是我錯過了什麼?
'strconv.Itoa'將'72'改爲'「72」'。符文已經是整數,所以'string(72)'給你與它相關的符文(''H'') –
感謝downvotes。我閱讀文檔並將其搜索了一個小時。 – chicks
Go的'strconv.Itoa'函數基於[C標準庫](http://www.cplusplus.com/reference/cstdlib/itoa/)中的'itoa'。 Go和C的行爲都有詳細的記錄。我沒有投票,但是因爲你的問題標題被描述爲一個陳述,並且你最終詢問一個_standard庫函數是否有明顯的bug,所以我並不驚訝這個downvotes。 –