Apakah kaedah penukaran heksadesimal biasa dalam Python?

WBOY
Lepaskan: 2023-05-12 14:22:20
ke hadapan
12356 orang telah melayarinya

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)))
Salin selepas log masuk

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)))
Salin selepas log masuk

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))
Salin selepas log masuk

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])))
Salin selepas log masuk

Tambahan

10 nombor negatif ditukar kepada perduaan

m = -1
bin(m & 0xffffffff)
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah kaedah penukaran heksadesimal biasa dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan