Yang paling biasa digunakan ialah fungsi terbina dalam Python untuk penukaran asas Secara amnya, apabila menggunakan fungsi terbina dalam untuk penukaran, anda mula-mula memasukkan input rentetan daripada konsol atau Rentetan tersuai mula-mula ditukar kepada perpuluhan dan kemudian ditukar kepada perpuluhan lain yang biasa ialah penukaran antara perduaan, perpuluhan, perlapanan dan perenambelasan. Satu prinsip diikuti:
Gunakan fungsi int untuk menukar asas lain kepada perpuluhan. , gunakan fungsi bin untuk menukar asas lain kepada binari, gunakan fungsi okt untuk menukar asas lain kepada oktal, dan gunakan fungsi hex untuk menukar asas lain kepada perenambelasan, dan dengan bantuan Perpuluhan digunakan sebagai jambatan perantaraan untuk penukaran, iaitu, fungsi int() digunakan.
dan ditukar kepada berat yang sepadan, rentetan yang sepadan akan mempunyai awalan yang sepadan, awalan binari ialah 0b, dan awalan oktal ialah 0o, dan awalan perenambelasan ialah 0x
Jadual berikut menggambarkan penukaran antara asas sepunya
2进制 | 8进制 | 10进制 | 16进制 | |
---|---|---|---|---|
2进制 | - | bin(int(input(),8)) | bin(int(input(),10)) | bin(int(input(),16)) |
8进制 | oct(int(input(), 2)) | - | oct(int(input(),10)) | oct(int(input(),16)) |
10进制 | int(input(),2)) | int(input(),8) | - | int(input(),16) |
16进制 | hex(int(input(), 2)) | hex(int(input(),8)) | hex(int(input(),10)) | - |
Apabila menggunakan fungsi terbina dalam, bagaimanapun Untuk menukar kepada sistem asas mana anda perlukan, hanya gunakan fungsi yang sepadan dengan sistem asas Dalam proses itu, anda perlu menukar kepada sistem perpuluhan (fungsi int()) terlebih dahulu Fungsi terbina dalam yang terlibat dalam penukaran asas ialah: binari: bin(), 8 Base: oct(), perpuluhan: int(), heksadesimal: hex()
if __name__ == '__main__': # input接收到的是字符串, 使用int函数定义输入的是什么进制的字符串转换为10进制数字 print(bin(int(input(), 16))) print(int(input(), 10)) print(oct(int(input(), 10))) print(hex(int(input(), 10)))
fungsi format untuk menukar
tambah dalam format b, o, x Tukar lain asas kepada perduaan, perlapanan atau perenambelasan
if __name__ == '__main__': print("{:b}".format(int(input(), 8))) print("{:o}".format(int(input(), 8))) print("{:x}".format(int(input(), 8)))
Tukar perpuluhan kepada kod asas Lain
class Solution: # 将十进制数字转换为任意的进制(1-16) def decimalToAny(self, decimal: int, x: int): remainder = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"] # 当n大于0的时候执行循环 res = "" while decimal: res = remainder[decimal % x] + res decimal //= x return res if __name__ == '__main__': decimal, x = map(int, input().split()) print(Solution().decimalToAny(decimal, x))
Asas lain ditukar kepada 10
class Solution: # 快速幂: x ** n def quickPower(self, x: int, n: int): res = 1 while n > 0: if n % 2 == 1: res *= x x *= x n //= 2 return res def anyToDecimal(self, s: str, base: int): n = len(s) res = 0 for i in range(n): # 数字, ord函数获取字母的ascii值 if "0" <= s[i] <= "9": res += (ord(s[i]) - ord("0")) * self.quickPower(base, n - i - 1) # 16进制数字对应的权重 elif "a" <= s[i] <= "f": res += (ord(s[i]) - ord("a") + 10) * self.quickPower(base, n - i - 1) else: res += (ord(s[i]) - ord("A") + 10) * self.quickPower(base, n - i - 1) return res if __name__ == '__main__': li = input().split() print(Solution().anyToDecimal(li[0], int(li[1])))
10 nombor negatif ditukar kepada perduaan
m = -1 bin(m & 0xffffffff)
Tukar antara integer
# 1. 10 -> 16 hex(number) # 2. 10 -> 2 bin(number) # 3. 10 -> 8 oct(number)# 4. x进制 -> 10 int(Union[str, bytes, bytearray],base=x) ------------------ print(int("0x16", base=16)) // 22
Tukar rentetan kepada integer
# 10进制 val = int('10') print(type(val), val) # 16进制 val = int('0xa', 16) print(type(val), val) val = int('a', 16) print(type(val), val) # 2进制 val = int('0b1010', 2) print(type(val), val) val = int('1010', 2) print(type(val), val) ----------------------------无意义------------------------------ # 3进制 val = int('101', 3) print(type(val), val) # 5进制 val = int('60', 5) print(type(val), val)
Atas ialah kandungan terperinci Apakah kaedah penukaran heksadesimal biasa dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!