-2
私は、いくつかのバイナリ数値をASCII相当のものに変換する短いプログラムを持っています。私は今日これをgoに翻訳しようとしましたが、strconv.Itoa()
が私の期待通りに動作しないことがわかりました。string()はstrconv.Itoa()がやりたいと思ったことを行います
string()
私は
strconv.Itoa()
が何だろうと思った何をやっているようなので、それはそう
$ go run chm-tshirt.go
01000011 67 67 C
01001000 72 72 H
01001101 77 77 M
を出力
// 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))
}
}
}
。私は3列目が4列目のものを表示することを期待していました。これはバグですか、何が欠けていますか?
'strconv.Itoa'は' 72'を '' 72 "'に変更します。ルーンはすでに整数なので、 'string(72)'はそれに関連付けられたルーンを与えます( '' H'') –
downvotesに感謝します。私はドキュメントを読んで、これを1時間Google検索しました。 – chicks
Goの 'strconv.Itoa'関数は[C標準ライブラリ](http://www.cplusplus.com/reference/cstdlib/itoa/)の' itoa'に基づいています。振る舞いはGoとCの両方でよく書かれています。私は投票しませんでしたが、あなたの質問のタイトルは文として表現され、_standardライブラリのfunction_に明らかなバグがあるかどうかを尋ねることで終わります。 –