-1

ユーザーからの文字入力を対応する 10 進数値に変換するにはどうすればよいですか? 始めるのに苦労しただけです。

プログラムは、次のことを達成する必要があります。

  1. プログラムはキーボードからの文字を受け入れます。

  2. 文字が数字 (「0」から「9」) の場合: a) 文字を対応する 10 進数値に変換します。つまり、'0' はゼロになり、'1' は 1 になり、...'9' は 9 になります。その値を R (「ランレングス」) と呼びましょう。b) 別の文字を待ちます (GETC を使用)。c) その文字の R 個のコピーをコンソールに出力します。) d) ステップ 1 に戻ります。

  3. 文字が Enter/Return (ASCII #10) の場合: 改行 (ASCII #10) をコンソールに出力し、手順 1 に戻ります。

  4. それ以外の場合は、プログラムを停止します。

4

1 に答える 1

0

10 進数の文字を、それから '0' (=0x30) を引いた数に変換します。16 進数 ('A' から 'F') の場合: 文字が '@' より大きい場合は、そこから 0x37 を減算します ('A' -> 0x0a)。16 進数 ('a' から 'f') の場合: 値がまだ 15 よりも大きい場合は、そこから 0x20 を減算します。または、テーブルを使用してマッピングすることもできます。256 バイトは非常に大きなテーブルではありません。

  • 結果(変数、レジスタなど)をゼロに設定します
  • ループで文字ごとに読み取ります
  • 文字を新しい数字 (1 桁の) に変換します
  • 無効な 16 進数文字の場合は、変数を返します - これで完了です
  • else 変数 = 変数 * 16 + 新しい数値
  • 16 を掛けるには、4 ビット桁を左にシフトします。
于 2014-03-28T22:46:39.457 に答える