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
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!