string()做了我希望strconv.Itoa()做的事情

时间:2016-08-30 19:28:17

标签: go ascii

我有一个简短的程序,可以将一些二进制数转换成它们的ASCII等价物。我今天尝试将其翻译成,发现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()会做的事情。我期待第三列显示我在第四列中得到的内容。这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

strconv.Itoa将整数格式化为十进制字符串。示例:strconv.Itoa(65)strconv.Itoa('A')返回字符串"65"

string(intValue)生成一个包含整数的UTF-8表示的字符串。示例:string('A')string(65)评估为字符串"A"