> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 일반적인 16진수 변환 방법은 무엇입니까?

Python에서 일반적인 16진수 변환 방법은 무엇입니까?

WBOY
풀어 주다: 2023-05-12 14:22:20
앞으로
12407명이 탐색했습니다.

1. 표준 진수 변환

가장 일반적으로 사용되는 것은 Python에 내장된 진수 변환 함수입니다. 일반적으로 변환을 위해 내장 함수를 사용할 경우 콘솔에서 입력한 문자열이나 사용자 정의 문자열을 먼저 10진수로 변환합니다. 그런 다음 10진수를 다른 진수로 변환합니다. 일반적인 것은 2진수, 10진수, 8진수, 16진수 간의 변환입니다. 한 가지 원칙을 따릅니다:

int 함수를 사용하기 위해 다른 진수를 10진수로 변환하고, 다른 진수를 2진수로 변환하려면, 다른 진수를 8진수로 변환하려면 oct 함수를 사용하고, 다른 진수를 16진수로 변환하려면 hex 함수를 사용하고, 변환을 위해 중간에 10진수를 브리지로 사용하는 즉, int() 함수가 사용됩니다.

그리고. 해당 가중치로 변환된 후 해당 문자열은 해당 접두사를 갖습니다. 이진 접두사는 ​​0b, 8진수 접두사는 ​​0o, ​​16진수 접두사는 ​​0x

다음 표는 다음을 반영합니다. 공통 염기 간의 변환

내장 함수를 사용할 때는 변환하려는 진수를 사용하면 됩니다. 해당 함수를 사용하고, 내장된 함수인 10진수로 먼저 변환해야 합니다. 10진수 변환에 관련된 함수는 다음과 같습니다: 2진수: bin(), 8진수: oct(), 10진수: int(), 16진수: hex()

binary octal decimal hexadecimal
binary - bin(int (입력(), 8)) bin( int(input(), 10)) bin(int(input(), 16))
octal oct( int(input(), 2)) - oct(int(input (), 10)) oct(int(입력(), 16))
decimal int(입력 (), 2)) int(입력(), 8) - int(input(), 16)
hex(int(input(), 2)) hex(int(input(), 8)) hex(int(input(), 10)) -
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)))
로그인 후 복사

변환을 위한 형식 함수

b, o, x를 추가하여 형식을 지정합니다. 다른 진수를 2진수, 8진수 또는 16진수로 변환

if __name__ == '__main__':
    print("{:b}".format(int(input(), 8)))
    print("{:o}".format(int(input(), 8)))
    print("{:x}".format(int(input(), 8)))
로그인 후 복사

2. 임의 진수 간 변환

10진수를 다른 진수로 변환

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))
로그인 후 복사

다른 진수를 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])))
로그인 후 복사
Supplement

음수를 10진수로 변환 바이너리

m = -1
bin(m & 0xffffffff)
로그인 후 복사

정수 간 변환

# 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
로그인 후 복사

문자열을 정수로

# 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)
로그인 후 복사

위 내용은 Python에서 일반적인 16진수 변환 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿