2012-02-08 33 views
-1

申し訳ありません以前に既に質問されていましたが、本当にこの質問に対する明確な答えが見つかりませんでした。 、変換の最速の方法は何か、教えてください:c - char *配列をint型とfloat型に変換する最も効率的な方法は何ですか?

char * array to int 
char * array to float 

のchar *配列は、例えば数、保存:x86およびx64システムのための最速の方法が異なっている場合

"12345" 
"1234,56789" 

は、両方とも教えてください。

編集:「最も速い」とは、「最も使いやすい」という意味ではなく「最も効率的」を意味します。

+1

atoi()とatof()を見てみましょう。私はちょうどGoogleがその1つを逃してしまったのだろうか? – Mithrandir

+0

私はいくつかの方法を知っていますが、私は最も速い方法が必要です - 大きなデータを処理するのに便利です。 –

答えて

9

ATOIでスタート()と(atof)、それが問題だかどうかを決定、速度を測定 - そして解決のために

編集を見て - それは、I/Oを過ごしたすべての時間を支配することはほぼ特定です変換を行う。変換時間が重要な場合(プロファイル後)、フォーマットがわかっている場合、ie。 int型は

2

あなただけのint型のため

atoi() 

を使用することができますが、標準のlibよりも優れてい手チューニングルーチンを作成することができるかもしれない、常に小数点以下5桁を持っている浮かぶ、常に4桁です
atof() 

フロート用。

1

intについては、明白なループがおそらく最も速いでしょう。

floatの場合、はるかに複雑です。結果が正しいかどうか気にしない場合は、同様に単純なループでも問題ありません。正確な結果が必要な場合は、strtodまたはatofなどを使用することをお勧めします。独自のローリングは非常に難しいためです。

関連する問題