コマンドラインで 8 進数を 10 進数に変換するために使用できる int(octal) のような多くの inbulit 関数がありますが、これらは script では機能しません。int(0671) は、スクリプトで 0671 を返します。これは、Python コマンド ラインで 8 進数の 10 進数形式を表すためです。ヘルプ???
ありがとうございました
ここには多少の混乱があります -- 衒学的に (そしてコンピューターでは衒学的であることが常に最善です;-)、「8 進数」は存在せず、数字の8 進数表現である文字列があります (そして、より一般的に遭遇する他の文字列は、それらの10 進表記、16 進表記)。基になる数値 (整数) は、どの表現ともまったく異なるタイプです (デフォルトでは、10 進表現が表示されます)。たとえば、次のようになります。
>>> 2 + 2
4
>>> '2' + '2'
'22'
引用符は文字列 (つまり、表現) を示します。つまり、引用符自体は、表現している数値とは何の関係もないことに注意してください。
したがって、質問を解釈する1つの方法は、8進数表現を10進数表現(など)に変換することです-それは次のようになります:
>>> str(int('0671', 8))
'441'
引用符で囲まれた (文字列、つまり表現を示す) ことに注意してください。 int(s, 8)
文字列s
を 8 進表現の整数に変換します (または、変換が機能しない場合は例外を発生させます)。 str(n)
数値の文字列形式を生成しますn
(前述したように、デフォルトでは 10 進表現です)。
まず、int() は役に立ちません。0671 と入力するだけです。
次に、数値はコンピューター自体にバイナリで保存され、文字列表現のみを変換します。番号自体は変わりません。したがって、これらは両方とも True に解決されます。たとえば、これが混乱の原因となった可能性があります。
0671 == 0671
0671 == 441
プログラムが必要な基数で数値を出力するようにするための最も簡単な方法は、次のように文字列の書式設定を使用することです (基数を 10 にしたい場合)。
print "%d" % 0671 # will output the number in base 10