Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah kaedah penukaran heksadesimal biasa dalam Python?

Apakah kaedah penukaran heksadesimal biasa dalam Python?

WBOY
WBOYke hadapan
2023-05-12 14:22:2012308semak imbas

1. Penukaran asas standard

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

2 Penukaran antara mana-mana asas

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__ == &#39;__main__&#39;:
    li = input().split()
    print(Solution().anyToDecimal(li[0], int(li[1])))

Tambahan

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(&#39;10&#39;)
print(type(val), val)
# 16进制
val = int(&#39;0xa&#39;, 16)
print(type(val), val)
val = int(&#39;a&#39;, 16)
print(type(val), val)
# 2进制
val = int(&#39;0b1010&#39;, 2)
print(type(val), val)
val = int(&#39;1010&#39;, 2)
print(type(val), val)
----------------------------无意义------------------------------
# 3进制
val = int(&#39;101&#39;, 3)
print(type(val), val)
# 5进制
val = int(&#39;60&#39;, 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam