1

文字列に含まれる数値を任意の基数から他の基数に変換するにはどうすればよいですか?

基数は何でもかまいません: 2、16、10、4、8、9。

ユーザーがベース番号を入力することを期待しています。ユーザーは、出力ベース (変換されるベース) を入力します。ユーザーは変換したい数値を入力します。

事前の考え: 入力ベースと出力ベースを変数に保存します。次に、彼が入力した数値を文字列に保存します (彼はあらゆる種類の数値 (16 進数、2 進数、基数 5 など) を入力できるため)。

その文字列を数値に変換して出力ベースに変換できるようにする方法を見つけようとしています。

何か案は?

4

2 に答える 2

3

数値 n を基数 b に変更する一般的なアルゴリズムは次のようになります。

i = 0
while(n != 0)
   answer[i] = n mod b
   n /= b
   i++

(answer[0] は回答の最下位桁を保持することに注意してください。) これは意味がありますか? この疑似コードのどの部分の実装に問題がありますか?

于 2010-05-16T19:17:49.157 に答える
1

文字列から整数に変換するには、ASCII テーブルを調べる必要があります。

最後に到達するまで、文字列の各文字を反復処理し、文字の内容とその範囲に基づいて、「0」から「9」、「a」から「f」、「A」から「F」にします。 、その範囲内の一番下の文字の値を減算し、適切な量を追加する必要があります. それをアキュムレータ値に追加すると、準備が整います。値がどのベースにあるかを示唆する値も確認する必要があると思います(たとえば、16進数値には「0x」がプレフィックスとして付けられると予想されます)。

たとえば、「1」が表示された場合は、「0」を差し引く必要があります。「a」が表示された場合は、「a」を差し引いて 0x0a を追加する必要があります。

于 2010-05-17T18:09:15.743 に答える