私は16進数をint、binary、asciiに変換するプログラムを書いています。 intとバイナリは正常に動作しましたが、asciiは問題を引き起こしています。入力テキストが2文字より短い場合は正常に動作しますが、それ以上のものがあれば不正な形式のテキストが表示されます。次のように私のコードは次のとおりです。Go Lang - 16進数をASCIIに変換する
package main
import "fmt"
import "strconv"
func main() {
// get input as string
fmt.Print("Enter hex to convert: ")
var input_hex string = ""
fmt.Scanln(&input_hex)
// convert hex to int and print outputs
if i, err := strconv.ParseInt(input_hex, 16, 0); err != nil {
fmt.Println(err)
} else {
// int
fmt.Print("Integer = ")
fmt.Println(i)
// ascii
fmt.Print("Ascii = ")
fmt.Printf("%c", i)
fmt.Println("")
// bin
fmt.Print("Binary = ")
fmt.Printf("%b", i)
fmt.Println("\n")
}
}
いくつかの出力の例進 "73616d706c65『を入力:私は検索をたくさんやったし、』に関するいくつかのドキュメントを見てきました
Enter hex to convert: 73616d706c65
Integer = 126862285106277
Ascii = �
Binary = 11100110110000101101101011100000110110001100101
をルーンズ 'しかし、私はこれがどのように動作するかについては不明です。これを実現するために使用できるビルトインの16進エンコード/デコードライブラリがありますか?
ASCIIには「印刷可能な文字」のコンセプトがあります。つまり、一部の値にはグラフィック表現がない場合があります。 – ain