-2

私はちょうど C を学んでおり、私のクラスではこれが最初のプログラムの一部です。

私が実装しようとしている関数の完全な説明:

それがtl;drの場合、重要なポイントは、他のライブラリの関数を使用することは許可されていないということです(そのため、そのようなものsrtolは除外されます)。

int parseHexString(char *hexString, int *integerRead); 最初のパラメーターは、ヌルで終了する C 文字列で、16 進数の整数を表します。この関数は、この文字列を解析し、それが表す整数値を累積します。この整数値は、2 番目のパラメーター integerRead が指す位置に配置されます。不正な 16 進数文字、つまり無効な 16 進数値が検出された場合、この関数は文字列内のそれ以上の文字の検索を停止し、-1 を返します。適切な 16 進数値が解析されると、0 が返されます。

この関数を実装する正しい方法は、最初に文字列内の最初の文字を調べ、解析を行うためにスタックを使用しません。最初のアセンブリ言語プログラムでは、この関数が達成することを実装する必要があるため、この関数を正しい方法で実装することで時間を節約できます。

この関数では、どのライブラリからも関数を呼び出さないでください。例外として、デバッグ目的でのみ使用できますprintf()。課題を提出する前にデバッグ コードを削除すると、採点に役立ちます。

私はこの関数の完全な実装を探しているだけではなく、始めるためのヒントやヒントを探しているだけです。

これを行う直感的な方法があるように感じますが、今は空白にしています。文字列の最初の文字から始めて、そこから先に進んで 10 進数に変換する方法に関心があります。

4

1 に答える 1

2

どうですか:

  • 文字列の長さを取得する
  • 弦を左から右に歩く
  • 各キャラクターについて:
    • 有効な 16 進文字かどうかを確認します
    • その 10 進値に 16^x を掛けた値を加算します。ここで、x は右側に残っている文字数です。
于 2013-02-09T09:51:24.537 に答える