2017-04-01 10 views
2

私はexec.Commandの助けを借りてGoの第三者ツールを使用しており、そのプログラムは明らかに文字列形式の大きな整数値を出力します。私はその文字列をint(またはより具体的にはuint64)に変換するのに問題があります。Goコマンド()の解析に関する問題Output()

詳細: (あなたはそれがなどが何であるかをプログラム無視することができますが、実行した後、それは私に大きな整数を返します)

cmd := exec.Command(app, arg0, arg1, arg3) 
stdout, err := cmd.Output() 
if err != nil { 
    fmt.Println(err.Error()) 
    return 
} 
temp := string(stdout) 

私は上記走った後、私は

以下のようにそれを解析しようとしていますここ
myanswer, err = strconv.Atoi(temp) //I know this is not for uint64 but I am first trying for int but I actually need uint64 conversion 
if err != nil { 
    fmt.Println(err) 
    return 
} 

問題は、stdoutがATOIを解析することができず、エラーに

strconv.Atoiを与え、その出力に\ r \ nを追加していることである。構文解析"8101832828 \ r \ n":無効な構文

誰かがこの文字列出力をuint64およびint形式plsに変換する方法を教えてくれますか? int64については

+0

このリンクは私に役立ちます。 dupの質問を申し訳ありません。http://stackoverflow.com/questions/37757683/parsing-integer-from-exec-command-output – Innocentguy

答えて

1

you would use

if i, err := strconv.ParseInt(s, 10, 64); err == nil { 
    fmt.Printf("i=%d, type: %T\n", i, i) 
} 

しかし、最初に、あなたが任意の改行文字を削除する必要があります。
strings.TrimSpaceなどを使用できます。