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

问题描述 投票:0回答:1

我有一个简短的程序,可以将一些二进制数转换为其 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()
会做的事情。 我期待第三列显示我在第四列中得到的内容。 这是一个错误还是我错过了什么?

string go ascii strconv
1个回答
9
投票

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

string(intValue)
生成一个包含整数的 UTF-8 表示形式的字符串。 示例:
string('A')
string(65)
计算结果为字符串
"A"

经验表明,许多人错误地期望

string(intValue)
返回整数值的十进制表示形式。由于这种期望非常常见,因此当整数值的类型不是
go vet
string(intValue)
时,Go 1.15 版本的
rune
会警告
byte
转换(请阅读详细信息此处)。

© www.soinside.com 2019 - 2024. All rights reserved.