Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Rentetan dalam Mana-mana Pangkalan dalam Python?

Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Rentetan dalam Mana-mana Pangkalan dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 06:10:18357semak imbas

How Can I Efficiently Convert Integers to Strings in Any Base in Python?

Menukar Integer kepada Rentetan dalam Mana-mana Pangkalan

Dalam Python, fungsi int() dengan mudah mencipta integer daripada rentetan dengan asas yang ditentukan. Walau bagaimanapun, operasi songsang untuk menukar integer kepada rentetan boleh menjadi rumit. Kami berhasrat untuk membangunkan penyelesaian umum, int2base(num, base), yang memenuhi syarat:

int(int2base(x, b), b) == x

Berikut ialah penyelesaian yang sangat mudah yang mengendalikan asas sewenang-wenangnya:

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

Fungsi ini menukar nombor n kepada asas b dan mengembalikan senarai digit. Untuk menukar nombor besar kepada asas 577, contohnya:

numberToBase(67854 ** 15 - 102, 577)

Ia akan memberikan anda hasil yang betul sebagai senarai:

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

Mengapa Penyelesaian Ini Berfungsi

Penyelesaian yang disediakan menunjukkan bahawa kadangkala, fungsi tersuai diperlukan apabila fungsi terbina dalam kekurangan fungsi yang diingini. Di sini, int2base() mengatasi had dengan:

  • Mengendalikan asas sewenang-wenang dari 2 hingga infiniti.
  • Mengembalikan senarai digit dan bukannya rentetan, kerana tiada fungsi terbina dalam wujud untuk penukaran asas terus kepada mana-mana asas sewenang-wenangnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Rentetan dalam Mana-mana Pangkalan dalam Python?. 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