ホームページ >バックエンド開発 >Python チュートリアル >Python で任意の基数の整数を文字列に変換するには?

Python で任意の基数の整数を文字列に変換するには?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 10:28:11438ブラウズ

How to Convert Integers to Strings in Any Base in Python?

任意の基数で整数を文字列に変換する

Python は、int() 関数を通じて指定された基数を使用して文字列を整数に変換する便利な機能を提供しますしかし、整数を異なる基数の文字列に変換し直すのは困難です。この記事は、このタスクに対処し、組み込み関数の制限を克服する一般的なソリューションを提供することを目的としています。

関数 int2base()

この問題に対処するには、次のようにします。次の要件を満たす関数 int2base(num,base) が提案されています:

  • 整数 x を変換します。ベース b の文字列 str に変換します: int(str, b) == x
  • int() 関数で受け入れられる有効な x と b をサポートします

Aシンプルな解決策

予想に反して、単純な解決策存在します:

def numberToBase(n, b):
    if n == 0:
        return [0]
    digits = []
    while n:
        digits.append(int(n % b))
        n //= b
    return digits[::-1]

この解決策は、2 から無限大までの任意の基数に対して機能します。たとえば、大きな整数を基数 577 に変換する必要がある場合:

numberToBase(67854 ** 15 - 102, 577)

正しく返されます:

[4, 473, 131, 96, 431, 285, 524, 486, 28, 23, 16, 82, 292, 538, 149, 25, 41, 483, 100, 517, 131, 28, 0, 435, 197, 264, 455]

この結果は、必要に応じて他の基数に簡単に変換できます。 .

解決策を理解する

解決の鍵この解決策は、さまざまな基数での数値の表現を理解することにあります。たとえば、基数 10 では、数値 123 は (1 10^2) (2 10^1) (3 * 10^0) を表します。同様に、任意の基数 b では、数値は b のべき乗の合計として表すことができます。

numberToBase() 関数は、入力 n を b で繰り返し除算し、剰余を収集することによって機能します。これらの余りは、逆の順序で、基数 b の数値の桁を表します。

以上がPython で任意の基数の整数を文字列に変換するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。