我有一個簡短的程序,可以將一些二進制數轉換為它們的 ASCII 等價物。我試著把它翻譯成走今天發現它strconv.Itoa()不像我預期的那樣工作。// translate Computer History Museum t-shirt// http://i.ebayimg.com/images/g/qksAAOSwaB5XjsI1/s-l300.jpgpackage mainimport ( "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 C01001000 72 72 H01001101 77 77 M所以它似乎string()正在做我認為strconv.Itoa()會做的事情。我期待第三列顯示我在第四列中得到的內容。這是一個錯誤還是我錯過了什么?
1 回答

九州編程
TA貢獻1785條經驗 獲得超4個贊
strconv.Itoa
將整數格式化為十進制字符串。示例:strconv.Itoa(65)
并strconv.Itoa('A')
返回字符串"65"
。
string(intValue)
產生一個包含整數的 UTF-8 表示形式的字符串。示例:string('A')
并string(65)
計算為字符串"A"
。
經驗表明,許多人錯誤地期望string(intValue)
返回整數值的十進制表示。因為這種期望非常普遍,所以 Go 1.15 版本會在整數值的類型不是或時go vet
警告轉換(請閱讀此處的詳細信息)。string(intValue)
rune
byte
- 1 回答
- 0 關注
- 183 瀏覽
添加回答
舉報
0/150
提交
取消