非常に大きな (>1MB) 10 進数をバイト/16 進数/2 進数に変換するにはどうすればよいですか?
たとえば、数値「300」は {0x01, 0x2C} に変換する必要があります。バイトオーダは問わず、{0x2C, 0x01}でもOKです。
ソース番号は準備されたファイルに保存されます (句読点、空白、または改行なし)。最大のものは17MB をわずかに超えていますが、将来的に 100MB になる可能性は否定できません。宛先もファイルです。
時間がかからない方法、または時間がかかった場合に備えてフェイルセーフな方法はありますか?
使用BigInteger
には時間がかかり、フェイルセーブではないのではないかと心配しています(つまり、何か問題が発生した場合、途中で再開できません)
「奇数かどうかをチェックし、2 で割る」よりも効率的なものを探していますが、独自のアルゴリズムの実装に反対しているわけではありません。バイナリから BCD への非常に効率的な実装、Shift および Add-3アルゴリズムを見てきましたが、同様に効率的な実装を逆に探しています。
固定小数点数 (1 桁と残りの 10 進数、たとえばPi)もサポートする実装に対する特別な称賛。