go string()实现了我希望strconv.Itoa()能够实现的功能,go,go,ascii,go,Go,Ascii" /> go string()实现了我希望strconv.Itoa()能够实现的功能,go,go,ascii,go,Go,Ascii" />

go string()实现了我希望strconv.Itoa()能够实现的功能

go string()实现了我希望strconv.Itoa()能够实现的功能,go,go,ascii,go,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() {

我有一个简短的程序,可以将一些二进制数转换成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()
会做的事情。我希望第三栏能显示我在第四栏中得到的东西。这是一个bug还是我遗漏了什么?

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

生成包含整数的UTF-8表示形式的字符串。示例:
string('A')
string(65)
计算为字符串
“A”


经验表明,许多人错误地期望
string(intValue)
返回整数值的十进制表示形式。因为这种期望非常普遍,所以当整数值的类型不是
rune
byte
(阅读详细信息)时,Go 1.15版本的
Go-vet
警告有关
string(intValue)
的转换。符文已经是整数了,所以
string(72)
为您提供了与之相关的符文(
'H'
),感谢您的否决票。我看了文档,用谷歌搜索了一个小时。Go的
strconv.Itoa
功能基于中的
Itoa
。Go和C的行为都有很好的文档记录。我没有投票,但由于您的问题标题是以语句形式表达的,并且您在结束时询问标准库函数是否存在明显的错误,我对否决票并不感到惊讶。我发现这个问题很有用。对于初学者来说,如果在
C
方面没有很强的背景,那么
Itoa()
函数将整数解析为字符串就不是很直观了。使用类似于其他语言中的
toString()
方法的
string()+1之所以选择此问题,是因为该问题将注意力吸引到了
string(intValue)
的行为上,这可能会让具有其他编程语言经验的人感到惊讶。我假设
string(123)
会产生
“123”
,但它实际上返回
“{”