Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah integer boleh ditukar menjadi rentetan dalam asas sewenang-wenangnya?

Bagaimanakah integer boleh ditukar menjadi rentetan dalam asas sewenang-wenangnya?

DDD
DDDasal
2024-12-13 18:25:10680semak imbas

How can integers be converted into strings in arbitrary bases?

Penukaran Integer kepada Rentetan dalam Asas Arbitrari

Soalan ini mencari kaedah untuk menukar integer kepada rentetan dalam sebarang pangkalan. Tidak seperti fungsi int(str, base) Python, yang membenarkan penciptaan integer daripada rentetan asas yang ditentukan, pendekatan yang diingini ialah songsangnya, yang mana rentetan dibina daripada integer.

Penyelesaian Mudah

Secara intuitif, orang cenderung menumpukan pada menukar kepada pangkalan kecil (mis., kurang daripada panjang abjad Inggeris). Walau bagaimanapun, soalan itu menuntut penyelesaian universal yang boleh digunakan pada mana-mana asas dari 2 hingga infiniti.

Penyelesaian mudah dibentangkan di bawah:

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

Fungsi ini mengambil integer n dan asas b sebagai memasukkan dan mengembalikan senarai digit yang mewakili n dalam asas b. Ia berfungsi dengan membahagikan n secara berulang dengan b dan mengumpul baki (iaitu, digit) dalam senarai. Senarai itu kemudiannya diterbalikkan untuk mendapatkan susunan digit yang betul.

Sebagai contoh, untuk menukar 67854**15 - 102 kepada asas 577:

print(numberToBase(67854 ** 15 - 102, 577))

Output:

[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]

Hasil ini boleh terus ditukar kepada mana-mana yang lain yang diingini asas.

Inti Utama

  • Kesederhanaan penyelesaian terletak pada kesedaran bahawa nombor dalam asas tertentu boleh diwakili oleh senarai digit di mana setiap digit mewakili kuasa asas.
  • Fungsi ini mengembalikan senarai digit untuk menampung sebarang asas, walaupun yang lebih besar daripada 36 (asas abjad dalam Python).
  • Memahami konsep nombor dalam asas yang berbeza adalah penting untuk memahami cara kerja kaedah ini.

Atas ialah kandungan terperinci Bagaimanakah integer boleh ditukar menjadi rentetan dalam asas sewenang-wenangnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn