多くの言語に文字列を整数に変換する関数があります。それではどうしますか?変換中にどのアルゴリズムが実行されていますか?コンパイラが整数を文字列に変換する方法とその逆を変換する方法
私はそれがすべてで似ているべきだと思うので、特定の言語で質問しません。
多くの言語に文字列を整数に変換する関数があります。それではどうしますか?変換中にどのアルゴリズムが実行されていますか?コンパイラが整数を文字列に変換する方法とその逆を変換する方法
私はそれがすべてで似ているべきだと思うので、特定の言語で質問しません。
文字列を整数に変換するには、各文字を順番に取り、 '0'から '9'の範囲にある場合はそれを10進数に変換します。通常、これは単純に '0'の文字値を減算します。以前の結果に10を乗算し、新しい値を追加します。数字が残らなくなるまで繰り返す。先頭に「 - 」マイナス記号がある場合は、結果を反転させます。
整数を文字列に変換するには、数値が負の場合は逆にします。整数を10で除算し、余りを保存します。 '0'の文字値を加算して、残りの文字を文字に変換します。これを文字列の先頭に押します。今度はあなたが部門から得た値を繰り返します。分割された値がゼロになるまで繰り返す。番号が負になった場合は先頭の「 - 」マイナス記号を付けてください。
ここに私の意見では擬似コードに最も近い言語であるPythonの具体的な実装があります。
def string_to_int(s):
i = 0
sign = 1
if s[0] == '-':
sign = -1
s = s[1:]
for c in s:
if not ('0' <= c <= '9'):
raise ValueError
i *= 10
i += ord(c) - ord('0')
i *= sign
return i
def int_to_string(i):
s = ''
sign = ''
if i < 0:
sign = '-'
i = -i
while True:
remainder = i % 10
i = i/10
s = chr(ord('0') + remainder) + s
if i == 0:
break
s = sign + s
return s
私はアルゴリズムそれ自体をと呼んではいませんが、言語によっては、文字をそれらの整数に変換することが必要になります。多くの言語は、整数(例えば、a
の文字)で表現できない最初の文字で停止し、すべての文字を盲目的にASCII値に変換します(例えば、a
の文字は97
になります)。または、できるものを変換するか、または0 /空を返すものだけを変換します。より多くの情報を提供するためには、フレームワーク/言語に特化しなければなりません。
文字列、整数する:
多くの(ほとんどの)言語も短い整数である文字の配列(またはリスト)のように、いくつかのレベルまたは別に、文字列を表します。数字の文字に対応する数字を数値にマッピングします。たとえば、asciiの '0'は48で表されます。したがって、48から0、49から1などを9にマップします。
左から始めて、現在の合計に10を掛け、次のキャラクターの価値、そして移動する。 (大小の地図を作成し、各ステップで乗算する数値を変更し、好きな基盤の文字列に変換することができます)
整数への変換は、ベース変換が10になるまでのより長いプロセスです。ほとんどの整数はビット数が限られているので(通常は32または64)、文字列(20文字)内にある文字数が最大数になることがわかります。だからあなたは自分の加算器を設定し、その値を計算した後に各ビットごとに各場所を反復することができます(2 ^の場所)。
これは数字の文字を数字に変換する "それと同等の10進数"ではありません。 –